https://leetcode-cn.com/problems/search-in-rotated-sorted-array/
思路:二分,判断
[
l
,
m
i
d
]
[l,mid]
[l,mid]、
[
m
i
d
,
r
]
[mid,r]
[mid,r]中哪一个是有序区间,再在该区间内判断。
class Solution {
public:
int search(vector<int>& nums, int target) {
int l=0,r=nums.size()-1,mid;
while(l<=r)
{
mid=(l+r)>>1;
if(nums[mid]==target)
return mid;
if(nums[mid]>=nums[l])
{
if(nums[l]<=target&&target<nums[mid])
r=mid-1;
else
l=mid+1;
}
else
{
if(nums[mid]<target&&target<=nums[r])
l=mid+1;
else
r=mid-1;
}
}
return -1;
}
};