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.
解决Search in Rotated Sorted Array 问题一不小心顺便搞定了。
class Solution {
public:
bool search(int A[], int n, int target) {
int start=0,end=n-1,mid;
while(start<=end){
mid=(start+end)>>1;
if(A[mid]==target) return true;
if(A[mid]>A[start]){//left side is sorted
if(A[start]<=target && A[mid]>target)
end=mid-1;
else
start=mid+1;
}else if(A[mid]<A[start]){//right side is sorted
if(A[end]>=target && A[mid]<target)
start=mid+1;
else
end=mid-1;
}else
start++; //avoid end=mid=start
}//while
return false;
}
};