思路
首先遍历一遍nums1数组,利用一个hashset将其存起来,假设这个set的名字是hash。然后再遍历一遍nums2数组,将hash中存在的元素加入一个新的set叫result。最后将这个result逐个元素都存到结果数组ans中。
复杂度
时间复杂度O(n)
空间复杂度O(n)
代码
class Solution {
public boolean search(int[] nums, int target) {
if(nums == null || nums.length == 0)
return false;
int start = 0, end = nums.length-1;
while(start + 1 < end) {
int mid = start + (end - start) / 2;
if(nums[mid] == target)
return true;
if(nums[mid] < nums[end]) {
if(nums[mid] <= target && target <= nums[end]) {
start = mid;
} else {
end = mid;
}
} else if(nums[mid] > nums[end]) {
if(nums[start] <= target && target <= nums[mid]) {
end = mid;
} else {
start = mid;
}
} else {
// 因为是从end开始跟mid进行比较的
// 如果上面的条件是mid与start比较,那么应该是start++
end--;
}
}
if(nums[start] == target || nums[end] == target)
return true;
return false;
}
}