33. 搜索旋转排序数组 - LeetCode
33. 搜索旋转排序数组
二分查找
- 在普通二分查找的情况下分情况讨论
- 旋转排序数组一般分为两个递增的序列,只需要判断mid位于左右哪个序列中,再移动lr即可
class Solution {
public int search(int[] nums, int target) {
int l = 0, r = nums.length - 1;
while(l <= r){
int mid = (l + r) / 2;
if(nums[mid] == target) return mid;
else if(nums[mid] >= nums[l]){
if(target > nums[mid] || target < nums[l]) l = mid + 1;
else r = mid - 1;
} else {
if(target < nums[mid] || target > nums[r]) r = mid - 1;
else l = mid + 1;
}
}
return -1;
}
}

浙公网安备 33010602011771号