二分搜索问题
class Solution {
public:
int search(vector<int>& nums, int target) {
int right=nums.size()-1,left(0),mid;
if(right==-1) return -1;
while(1)
{
mid=(left+right)/2;
if(nums[mid]==target)
{
return mid;
}else if(left>=(right-1))
{
if(nums[right]==target)
{
return right;
}
return -1;
}
if(nums[mid]>=nums[left]&&nums[mid]<=nums[right])
{
if(target>nums[mid])
{
left=mid;
}else{
right=mid;
}
}else if(nums[left]>nums[mid])
{
if(target==nums[right])
{
return right;
}
if(target>nums[mid]&&target<nums[right])
{
left=mid;
}else
{
right=mid;
}
}else{
if(target==nums[left])
{
return left;
}
if(nums[mid]>target&&target>nums[left])
{
right=mid;
}else{
left=mid;
}
}
}
return mid;
}
};