一、题目描述
二、解题思路
该数组看成两个有序数组的拼接,不能遍历来找到旋转点的位置(会超时),关键是要明确旋转点与目标值索引的相对位置。分情况讨论如下:
- nums[left] <= nums[mid]。说明【left~mid】为有序数组,当 nums[left] < target ≤ nums[mid],说明target在[left, mid]区间;
- nums[left] > nums[mid]。说明旋转点在[left, mid]中间,若:
1)target < nums[mid] ≤ nums[left];
2)nums[mid] < nums[left] ≤ target;
则说明target在[left, mid]区间。
其他情况说明target在[mid+1, right]区间.
然后按照二分查找设置上下边界即可。