这里只会有两种情况
第一种情况下若要找比mid大的值只有往右走,若要找比mid小的值,左右都有可能
第二种情况下若要找比mid小的值只有往左走,若要找比mid大的值,左右都有可能
class Solution {
public:
int search(vector<int>& nums, int target) {
int n=nums.size();
int left=0,right=n-1;
int premid;
while(left<=right)
{
int mid=(left+right)>>1;
if(nums[mid]==target)
return mid;
else if(nums[mid]>target)
{
if(nums[mid]<nums[left])
right=mid-1;
else
{
if(nums[left]>target)
left=mid+1;
else
right=mid-1;
}
}
else
{
if(nums[mid]>nums[left])
left=mid+1;
else
{
if(target>nums[right])
right=mid-1;
else
left=mid+1;
}
}
}
return -1;
}
};