Follow up for "Search in Rotated Sorted Array":
What if duplicates are allowed?
Would this affect the run-time complexity? How and why?
Write a function to determine if a given target is in the array.
Subscribe to see which companies asked this question
class Solution {
public:
bool search(vector<int>& nums, int target) {
int len = nums.size();
if(len==0) return -1;
int pivot=0, i=0;
for(i=1; i<len; i++) {
if(nums[i] < nums[i-1]) {
pivot=i;
break;
}
}
int left = 0, end = len-1;
if(target < nums[pivot]) return false;
if(pivot-1>=0 && target>nums[pivot-1]) return false;
if(pivot-1 >=0 && target >= nums[0] && target <= nums[pivot-1]) {
left = 0;
end = pivot-1;
} else {
left = pivot;
end = len-1;
}
while(left <= end) {
int mid = (left+end)/2;
if(target==nums[mid]) return true;
else if(target > nums[mid]) {
left = mid+1;
} else {
end = mid-1;
}
}
return false;
}
};