题目:
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.
class Solution {
public:
bool search(int A[], int n, int target) {
return helper(A, 0, n-1, target);
}
private:
bool helper(int A[], int low, int high, int target) {
if(low > high)
return false;
if(A[low] < A[high]) {
while(low <= high) {
int mid = (low+high)/2;
if(A[mid] == target)
return true;
else if(A[mid] < target)
low = mid+1;
else
high = mid-1;
}
return false;
}
else {
int mid = (low+high)/2;
if(A[mid] == target)
return true;
else
return helper(A, low, mid-1, target) || helper(A, mid+1, high, target);
}
}
};