Problem: Find the non duplicate items from two given array (not the sorted array). If array one is {1, 2, 3} and second array is having {2, 3, 4} then result should be {1,4}.
What i did: I achieved it through using Set. But it seems O(n2).
What i need: Is there any other algorithm which can be written in much optimized for?
My code:
package src;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.TreeSet;
public class GetNonDuplicate {
public static void main(String[] args) {
Integer[] arrayOne = {1, 2, 3};
Integer[] arrayTwo = {2, 3, 4};
List<Integer> resultList = new ArrayList<Integer>();
List<Integer> listOfArrayOne = new ArrayList<Integer>(Arrays.asList(arrayOne));
TreeSet<Integer> setOne = new TreeSet<Integer>(listOfArrayOne);
System.out.println("SetOne is : " + setOne);
for (Integer elem2 : arrayTwo) {
boolean exists = setOne.add(elem2);
System.out.println("For elem2 [" + elem2 + "], exists [" + exists + "]." );
if (exists) {
resultList.add(elem2);
}
}
System.out.println(resultList);
List<Integer> listOfArrayTwo = new ArrayList<Integer>(Arrays.asList(arrayTwo));
TreeSet<Integer> setTwo = new TreeSet<Integer>(listOfArrayTwo);
System.out.println("setTwo is : " + setTwo);
for (Integer elem1 : arrayOne) {
boolean exists = setTwo.add(elem1);
System.out.println("For elem2 [" + elem1 + "], exists [" + exists + "]." );
if (exists) {
resultList.add(elem1);
}
}
System.out.println(resultList);
}
}