Find duplicate elements in array in O(N) time
/* Find if given array has duplicate elements (more than 1 occurence)
Time Constraint: O(N)
Author: Jayesh CP
*/
import java.util.*;
import java.lang.*;
import java.io.*;
public class FindDuplicates
{
public static void main (String[] args) throws java.lang.Exception
{
int[] nums = {1,2,3,4,5,5,6,7,8,8,9,1};
if(hasDuplicates(nums)) {
System.out.println("Found duplicates !");
} else {
System.out.println("No duplicates");
}
}
private static void hasDuplicates(int[] nums) {
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
boolean duplicate = false;
for(int i = 0; i < nums.length; i++) {
if(map.containsKey(nums[i])) {
map.put(nums[i], (map.get(nums[i]) + 1));
duplicate = true;
break;
} else {
map.put(nums[i], 1);
}
}
// printDuplicates(map);
return duplicate;
}
/*
private static void printDuplicates(Map<Integer, Integer> map) {
Iterator it = map.entrySet().iterator();
while(it.hasNext()) {
Map.Entry pairs = (Map.Entry)it.next();
if((int)pairs.getValue() > 1) {
System.out.print(pairs.getKey() + " ");
}
}
}
*/
}