【second】Search in Rotated Sorted Array
不要忘了考虑这种情况[3,1] 此时left == mid,A[left]==A[mid]
int search(int A[], int n, int target) {
// Note: The Solution object is instantiated only once and is reused by each test case.
int left = 0,right = n-1;
while(left<=right)
{
int mid = left+(right-left)/2;
if(A[mid]==target)
return mid;
if(A[left]<A[mid]) //left part is sorted
{
if(A[left]<=target&&target<A[mid])
right = mid-1;
else
left = mid+1;
}else if(A[left]>A[mid]) //right part is sorted
{
if(A[mid]<target&&target<=A[right])
left = mid+1;
else
right = mid - 1;
}else
left++; 考虑left == mid的情况
}
return -1;
}
浙公网安备 33010602011771号