您的位置:首页 > 其它

81. Search in Rotated Sorted Array II

2018-03-23 11:16 381 查看
Follow up for "Search in Rotated Sorted Array":
What if duplicates are allowed?Would this affect the run-time complexity? How and why?Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.(i.e., 
0 1 2 4 5 6 7
 might become 
4 5 6 7 0 1 2
).Write a function to determine if a given target is in the array.The array may contain duplicates.和33题一样,但是可以包含duplicate,那么就是要除了判断排好的情况,还要判断一下,头尾可能和mid相同的情况,这样就直接start++ 或者 end--
代码如下:class Solution {
public:
bool search(vector<int>& nums, int target) {
if (nums.size() == 0) return false;
int start = 0, end = nums.size() - 1;
int mid;
while (start <= end) {
mid = (start + end) / 2;
if (nums[mid] == target) return true;

if (nums[mid] < nums[end]) {
if (nums[mid] < target && target <= nums[end])
start = mid + 1;
else end = mid - 1;
}
else if (nums[mid] > nums[start]) {
if (nums[mid] > target && target >= nums[start])
end = mid - 1;
else start = mid + 1;
}
else {//说明头尾必定有一个和mid的值相同
if (nums[mid] == nums[start])
start++;
else end--;
}
}
return false;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: