class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
Set<Integer> set = new HashSet<>();
Arrays.sort(nums2); // binary search need sorted
for(int num : nums1){
if(binarySearch(nums2, num))//num1's elements are in num2
set.add(num);//store elements in num1 will not repeat
}
int i = 0;
int[] res = new int[set.size()];
for(Integer num : set)
res[i++] = num;
return res;
}
public boolean binarySearch(int[] nums, int target){
int lo = 0;
int hi = nums.length - 1;
while(lo <= hi){
int mid = (hi - lo)/2 + lo;
if(nums[mid] == target) return true;
if(nums[mid] > target) hi = mid - 1;
else lo = mid + 1;
}
return false;
}
}