class Solution {
public:
int search(int A[], int n, int target) {
// Note: The Solution object is instantiated only once and is reused by each test case.
int sta=0,end=n-1;
while(sta<end)
{
int mid=(sta+end)/2;
if(A[sta]<=A[mid])//因为A中没有重复的元素,所以左半边排序好了
{//注意上面是A[mid]和A[sta]去比较,而不是A[mid]和A[mid-1]去比较!!
if(A[sta]<=target&&target<=A[mid])
end=mid;
else
sta=mid+1;
}
else//右半边排序好了
{
if(A[mid]<=target&&target<=A[end])
sta=mid;
else
end=mid-1;
}
}
if(end>=0&&end<=n-1&&A[end]==target)//这里写sta或者end都OK
return end;
else
return -1;
}
};
【leetcode】Search in Rotated Sorted Array
最新推荐文章于 2024-05-03 20:14:24 发布