Intersection of Two Arrays
public class Solution {
/**
* @param nums1: an integer array
* @param nums2: an integer array
* @return: an integer array
*/
public int[] intersection(int[] nums1, int[] nums2) {
// write your code here
if(nums1 == null || nums2 == null) {
return null;
}
HashSet<Integer> resultHash = new HashSet<>();
Arrays.sort(nums2);
for(int i = 0; i < nums1.length; i++) {
if(binarySearch(nums1[i], nums2) && !resultHash.contains(nums1[i])) {
resultHash.add(nums1[i]);
}
}
int[] result = new int[resultHash.size()];
int index = 0;
for(Integer num: resultHash) {
result[index++] = num;
}
return result;
}
private boolean binarySearch(int target, int[] nums) {
if(nums == null || nums.length == 0) {
return false;
}
int start = 0, end = nums.length - 1;
while(start + 1 < end) {
int mid = (end - start) / 2 + start;
if(nums[mid] == target) {
return true;
}else if (nums[mid] < target) {
start = mid;
}else {
end = mid;
}
}
if (nums[start] == target || nums[end] == target) {
return true;
}else {
return false;
}
}
}
最后更新于
这有帮助吗?