时间要求 O(log n)
看代码就好
class Solution
{
public:
int search(vector<int> &nums, int target)
{
int left = 0;
int right = nums.size() - 1;
while (left <= right)
{
int mid = left + (right - left) / 2;
if (target == nums[mid])
return mid;
if (nums[mid] >= nums[left])
{
// 左边已排序
if (target < nums[mid] && target >= nums[left])
right = mid - 1;
else
left = mid + 1;
}
else
{
// 右边已排序
if (target > nums[mid] && target <= nums[right])
left = mid + 1;
else
right = mid - 1;
}
}
return -1;
}
};