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

算法:153.寻找旋转排序数组中的最小值

题目

链接:leetcode链接

在这里插入图片描述

思路分析(二分)

题目要求O(logN)的时间复杂度,那就必然是使用二分算法了。

怎么个二分呢?
首先,我们来寻找二段性

我们看示例一:
3,4,5,1,2
旋转后,我们可以发现最小元素的左边全部都比最右边的值大,最小元素右边全部都小于等于最右边的值。

根据这一规则,二分不就来了嘛
很明显,是寻找左边界的二分。

细节:

while(left < right) //这里不能取等,不然死循环
mid = left + (right - left) / 2;
left = mid + 1;
right = mid;
题目要求返回最小元素,不是最小元素的下标

代码

int findMin(vector<int>& nums) {int left = 0,right = nums.size() - 1;while(left < right){int mid = left + (right - left) / 2;if(nums[mid] > nums[nums.size() - 1]) left = mid + 1;else right = mid;}return nums[left];}

http://www.mrgr.cn/news/40140.html

相关文章:

  • Kd-tree介绍和使用
  • 室内定位论文整理-20240930期
  • python如何判断图片路径是否存在
  • DRF实操——项目部署
  • Conda 虚拟环境使用指南,python,anaconda,miniconda
  • 自己做个国庆75周年头像生成器
  • 解决 Could not locate zlibwapi.dll. Please make sure it is in your library path
  • LLM 构建Data Multi-Agents 赋能数据分析平台的实践之⑥:NL2SQL技术探讨
  • TI DSP TMS320F280025 Note16:EPWM的原理与使用
  • 粉丝们得以一窥索菲亚罗兰奢华的90岁生日庆祝仪式! 她已完成了所有的遗愿清单 !
  • 删除二叉树中以x为根节点的子树(包括根结点)
  • Java常用三类定时器快速入手指南
  • 2024/9/30 英语每日一段
  • 数据结构之链表(2),双向链表
  • Python的异步编程
  • HTML+CSS基础 第二季课堂笔记
  • 【d56】【sql】完成sql 7题目
  • 读代码UNET
  • CSV数据行(取值)的列数多于表头字段数-Pandas无法正常读取
  • 鸿蒙开发(NEXT/API 12)【状态查询与订阅】手机侧应用开发