0
点赞
收藏
分享

微信扫一扫

LeetCode——33.搜索旋转排序数组

邯唐情感 2022-07-12 阅读 117


LeetCode——33.搜索旋转排序数组_算法

题解

LeetCode——33.搜索旋转排序数组_算法_02

  • 注意下标选取不要使用 LeetCode——33.搜索旋转排序数组_算法_03,避免越界

AC-Code

class Solution {
public:
int search(vector<int>& nums, int target) {
int n = nums.size();
if(n == 0) return -1;
if(n == 1) return nums[0] == target ? 0 : -1;

int L = 0, R = n - 1;
while(L <= R) {
int mid = L + (R - L >> 1);
if(nums[mid] == target) return mid;
if(nums[0] <= nums[mid]) { // 左侧有序
if(nums[0] <= target && target < nums[mid]) { // 如果在左面有序范围
R = mid - 1;
}
else { // 可能在右面
L = mid + 1;
}
}
else { // 右侧有序
if(nums[mid] < target && target <= nums[n - 1]) { // 在右侧有序范围
L = mid + 1;
}
else { // 可能在左面
R = mid - 1;
}
}
}
return -1;
}
};


举报

相关推荐

0 条评论