class Solution {
public:
int search(vector<int>& nums, int target) {
if(nums.size() < 1)
{
return -1;
}
int left = 0;
int right = nums.size()-1;
int mid = 0;
while(left<=right)
{
mid = (left+right)/2;
if(nums[mid] == target)
{
return mid;
}
if(nums[left] < nums[mid])//说明左边有序
{
if(nums[left] == target)
{
return left;
}
else if(nums[mid] < target || nums[left] > target)//左边有序,且大于最大的,小于最小的,因此不在左边
{
left = mid + 1;
}
else
{
right = mid - 1;
}
}
else//右边有序
{
if(nums[right] == target)
{
return right;
}
else if(nums[mid] > target || nums[right] < target)//右边有序,且大于最大的,小于最小的,因此不在右边
{
right = mid - 1;
}
else
{
left = mid + 1;
}
}
}
return -1;
}
};