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

剑指 Offer 11. 旋转数组的最小数字

剑指 Offer 11. 旋转数组的最小数字

二分
要注意的是,由于存在重复数字,所以初始状态可能不满足二分的性质。不满足的情况是:左边开始的数字和右边结束的数字相等,所以一开始要缩小右边界,让右边界的数字小于第一个数字。这样左边的数字都大于等于第一个数字,右边的数字都小于第一个数字,两个区间的性质不同,就可以进行二分了。还有排除递增的情况。

class Solution {public int minArray(int[] numbers) {int l = 0, r = numbers.length - 1;while(r > 0 && numbers[r] == numbers[0]) r--;  // 缩小右边界if(numbers[r] >= numbers[0]) return numbers[0];  // 排除递增的情况while(l < r){int mid = (l + r) >> 1;if(numbers[mid] >= numbers[0]) l = mid + 1;else r = mid;}return numbers[l];}
}
http://www.lryc.cn/news/148714.html

相关文章:

  • Redis面试题总结
  • 【Eclipse】搭建python环境;运行第一个python程序helloword
  • OpenAI 发布企业版ChatGPT-4
  • Flowable7 设计器
  • Flutter问题记录 - Unable to find bundled Java version
  • Tomcat 日志乱码问题解决
  • yum源以及rpm安装包配置、yum源冲突、yum-config-manager命令找不到、curl: (35)、docker镜像重复拉取失败
  • ChatGPT和文心一言的优缺点比较
  • ⛳ 面试题-单例模式会存在线程安全问题吗?
  • C - 滑动窗口 /【模板】单调队列
  • 工厂人员作业行为动作识别检测算法
  • 【数据结构】顺序表详解
  • HTML 播放器效果
  • C++常用23种设计模式总结(三)------装饰模式
  • 选择O型圈时要考虑哪些因素?
  • 安全管理中心技术测评要求项
  • Hibernate(Spring Data)抓取策略
  • 【高阶数据结构】map和set的介绍和使用 {关联式容器;键值对;map和set;multimap和multiset;OJ练习}
  • 系统架构技能之设计模式-单件模式
  • Redis进阶 - JVM进程缓存
  • SD-WAN带您告别高成本、单一功能和安全性差
  • 面试必备:揭秘ArrayList和LinkedList,区别、优缺点与使用场景
  • 【局部活动轮廓】使用水平集方法实现局部活动轮廓方法研究(Matlab代码实现)
  • Git 同步远程新的同名分支
  • PingCode DevOps 团队:企业CICD流水线可能会遇到的问题及解法
  • 【LeetCode题目详解】第九章 动态规划part01 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯 (day38补)
  • 图像处理 信号处理板 设计原理图:367-基于zynq XC7Z100 FMC接口通用计算平台
  • PHP中header()的七种用法
  • 臻图信息以数字孪生技术推动智慧小区数字化建设
  • 15.CSS发光按钮的悬停特效