Day26力扣打卡

编程入门 行业动态 更新时间:2024-10-25 21:29:33

Day26力扣打卡

Day26力扣打卡

打卡记录


搜索旋转排序数组(二分)

链接

class Solution {int findMin(vector<int> &nums) {int left = -1, right = nums.size() - 1; // 开区间 (-1, n-1)while (left + 1 < right) { // 开区间不为空int mid = left + (right - left) / 2;if (nums[mid] < nums.back()) right = mid; // 蓝色else left = mid; // 红色}return right;}int lower_bound(vector<int> &nums, int left, int right, int target) {int r0 = right;while (left + 1 < right) { // 开区间不为空// 循环不变量:// nums[left] < target// nums[right] >= targetint mid = left + (right - left) / 2;if (nums[mid] < target)left = mid; // 范围缩小到 (mid, right)elseright = mid; // 范围缩小到 (left, mid)}return right < r0 && nums[right] == target ? right : -1;}public:int search(vector<int> &nums, int target) {int i = findMin(nums), left, right;if (target > nums.back()) left = -1, right = i; // 左段else left = i - 1, right = nums.size(); // 右段return lower_bound(nums, left, right, target);}
};

更多推荐

Day26力扣打卡

本文发布于:2023-11-15 11:29:11,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1598838.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!