当前位置: 首页 > ds >正文

力扣HOT100之二分查找:153. 寻找旋转排序数组中的最小值


这道题是上一道题:33. 搜索旋转排序数组的前置题,有点没看懂力扣为什么要这样安排题目顺序,应该把这道题按排在前面才对啊。。。这道题的思路已经在上一道题的思路中说过了,这里就直接复制粘贴上一篇博客中的内容了。
我们阅读完题目不难看出,经过旋转后,数组nums有两种可能的状态:

  1. nums被分为两个局部有序的子数组,每一个子数组都是严格递增的,此时第一个数组中的所有值均大于第二个数组中的最大值;
  2. nums依旧保持整体有序
    因此我们需要利用二分查找来判断,定义left = 0right = nums.size() - 1,使用左闭右开的搜索范围([left, right)),注意,此时nums的最后一个元素始终都不在查找范围内,因为我们需要不断将中间值与num最后一个元素进行比较,以确定最小值与中间值的位置关系。
    1.当nums[mid] > nums.back()时,说明mid此时一定在第一个数组中,因为nums[mid]比第二个数组的最大值都更大,不可能落在第二个数组中,此时数组的最小元素一定在mid的右边,此时我们更新搜索区间的左边界,left = mid + 1
    2.当nums[mid] <= nums.back()时,说明mid此时一定在第二个数组中,因为nums.back()比第一个数组的任意元素都更小,而nums[mid]nums.back()还小,不可能落在第一个数组,此时数组的最小元素一定在mid的左边,此时我们更新搜索区间的右边界,right = mid
    我们使用一个while循环来寻找最小元素的位置,由于我们采用的是左闭右开的查找方式,因此区间合法的条件是left < right,当循环结束后left == right,此时nums[left]或者nums[right]都是最小值。
class Solution {
public:int findMin(vector<int>& nums) {int left = 0, right = nums.size() - 1;  //[left, right)int mid;while(left < right){mid = (left + right) / 2;if(nums[mid] > nums.back())  //最小值在mid的右边left = mid + 1;else right = mid;   //最小值在mid的左边}return nums[left];}
};
http://www.xdnf.cn/news/12802.html

相关文章:

  • 管道与进程间通信
  • Riverpod与GetX的优缺点对比
  • KTO: Model Alignment as Prospect Theoretic Optimization
  • 【基础算法】差分算法详解
  • 机器学习的数学基础:神经网络
  • Ajax Systems公司的核心产品有哪些?
  • 华为云Flexus+DeepSeek征文|Dify - LLM 云服务单机部署大语言模型攻略指南
  • 基于Java+VUE+MariaDB实现(Web)仿小米商城
  • 机器学习-经典分类模型
  • 不要调用 TOARRAY() 从 LARAVEL COLLECTION 中获取所有项目
  • DeepSeek-R1-0528:开源推理模型的革新与突破
  • 深入理解 Vue.observable:轻量级响应式状态管理利器
  • UOS 20 Pro为国际版WPS设置中文菜单
  • C++:用 libcurl 发送一封带有附件的邮件
  • Go 并发编程深度指南
  • cmake编译LASzip和LAStools
  • # 主流大语言模型安全性测试(二):英文越狱提示词下的表现与分析
  • Oracle业务用户的存储过程个数及行数统计
  • Linux中MySQL的逻辑备份与恢复
  • 协程的常用阻塞函数
  • 用Ai学习wxWidgets笔记——在 VS Code 中使用 CMake 搭建 wxWidgets 开发工程
  • SQLMesh实战:用虚拟数据环境和自动化测试重新定义数据工程
  • 虚拟电厂发展三大趋势:市场化、技术主导、车网互联
  • Opencv查找图形形状的重要API讲解
  • springboot的test模块使用Autowired注入失败
  • 【storage】
  • 从认识AI开始-----AutoEncoder:生成模型的起点
  • axure制作数据列表并实现单选和多选以及鼠标滑动行hover
  • Vue3+Element Plus表单验证实战:从零实现用户管理
  • 音频剪辑软件少之又少好用