My Solution:
public class removeUniqueElements {
public static Integer[] removeUnique(int[] arr){
Map<Integer,Integer> output = new HashMap<Integer,Integer>();
List<Integer> result = new ArrayList<Integer>();
for(int i=0;i<arr.length;i++){
if(output.containsKey(arr[i])){
int count = output.get(arr[i]);
count = count+1;
output.put(arr[i],count);
}
else
{
output.put(arr[i],1);
}
}
for(int i=0;i<arr.length;i++){
if(output.get(arr[i])!=1){
result.add(arr[i]);
}
}
return result.toArray(new Integer[result.size()]);
}
public static void main(String[] args){
int[] array = {1,2,3,4,2,3,4};
Integer[] result = removeUnique(array);
System.out.println(Arrays.toString(result));
}
}
Time Complexity : O(n) Space Complexity : O(n)
Is there any other way to reduce the space complexity? Please help.