立志用最少的代码做最高效的表达


把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。

示例 1:
输入:[3,4,5,1,2]
输出:1

示例 2:
输入:[2,2,2,0,1]
输出:0


注意:官方给的题解虽然也能输出正确答案,但可能不是旋转数组中第一个最小的值,如输入:12222111,则官方答案输出的结果是第一个1,而不是最后一个2后的第一个1。

这道题细节很多很多,个人感觉在细节方面评个hard也不为过。


class Solution {public int minArray(int[] numbers) {int high = numbers.length-1, low = 0;while(high > low) {int mid = low + ((high - low) >> 1);// 为什么这里是=mid,而不是=mid+1,因为mid这个值是比较小的,因此有可能是最小值,所以不能跳过if(numbers[mid] < numbers[high]) high = mid;// 为什么这里是=mid+1,因为这个mid值很大,绝对不可能是最大值,因此可以跳过else if(numbers[mid] > numbers[high]) low = mid + 1;// 若mid = high,则说明重复了,则high--,去重else high--;}return numbers[low];}
}

【双百解法】剑指 Offer 11. 旋转数组的最小数字相关推荐

  1. 【LeetCode】剑指 Offer 11. 旋转数组的最小数字

    [LeetCode]剑指 Offer 11. 旋转数组的最小数字 文章目录 [LeetCode]剑指 Offer 11. 旋转数组的最小数字 一.遍历 二.二分法 总结 一.遍历 算法步骤: 遍历数组 ...

  2. 《LeetCode力扣练习》剑指 Offer 11. 旋转数组的最小数字 Java

    <LeetCode力扣练习>剑指 Offer 11. 旋转数组的最小数字 Java 一.资源 题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 给你一个可能存在 ...

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

    剑指 Offer 11. 旋转数组的最小数字 题目 解题思路 方法(一)直接遍历法 方法(二)二分查找法 题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组 ...

  4. 剑指offer 11. 旋转数组的最小数字(很详细!)

    剑指offer 11. 旋转数组的最小数字 题目 解题思路 代码 题目 解题思路 一开始,我们就能直接想到,数组找最小值,那么不轻轻松松直接遍历一遍,用一个变量记录最小值,然后直接返回不就完事了? 但 ...

  5. 【剑指 Offe】剑指 Offer 11. 旋转数组的最小数字

    目录标题 算法汇总 题目 关键点 代码 1.解体方法 - 二分法 思路 代码 时间和空间复杂度 2.解题方法,如暴力法 思路 代码 时间和空间复杂度 算法汇总 以下是所有算法汇总,包括GitHub源码 ...

  6. 剑指offer——11.旋转数组的最小数字

    题目: 题1:实现快速排序 题2:年龄排序问题. 题3:旋转数组的最小数字 知识点: 快速排序算法,参考:https://blog.csdn.net/shujuelin/article/details ...

  7. Leetcode 剑指 Offer 11. 旋转数组的最小数字 (每日一题 20210916)

    把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转, ...

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

    把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转, ...

  9. leetcode剑指 Offer 11. 旋转数组的最小数字(二分查找)

    把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转, ...

最新文章

  1. 粒子滤波在图像跟踪领域的实践
  2. qt dll 1% 不是有效的win32应用程序
  3. oracle 连接池sql跟踪,实现SQLServer、MySQL和oracle数据库连接池
  4. SpringMVC 理论与实用技术(一) 简单、实用、易懂的几个实例
  5. 主题模型 LDA,Dirichlet分布 和朴素贝叶斯算法
  6. Web技术电子期刊2008年第3期(总第23期)
  7. oracle logminer java_Oracle logminer
  8. gin post 数据参数_golang--gin获取post里body的参数
  9. JavaScript数组归并方法reduce
  10. [第1节]时间、空间复杂度,斐波那契、爬楼梯
  11. 网上偶看一文,有感。特贴在下面。
  12. 自制病毒——控制桌面鼠标以及开关机
  13. 弱监督学习的介绍及应用
  14. 微信小程序image背景图片全屏显示(根据设备高度自适应背景图片)
  15. 一看就懂的保姆级教程:open vn设置 (亲测通过)
  16. Hadoop生态系统功能组件,主要包括哪些?
  17. OSChina 周三乱弹 ——送你们个漂亮妹子!
  18. 金融信贷业务-贷中整理
  19. Linux之无人值守安装系统
  20. Hexo yilia 主题添加来必力评论系统

热门文章

  1. 聊聊 HTTP 常见的请求方式
  2. 不是keys,记一次因 redis 使用不当导致应用卡死 的过程
  3. 面试官:为什么 wait() 方法需要写在循环里?
  4. 飞哥:程序员完全没时间提升自己该怎么办?
  5. 阿里云linux上安装与配置Mysql
  6. TikTok 英国业务亏损、苹果从中国应用商店下架近4万款游戏、Zoom 接受调查等|Decode the Week...
  7. 【线上分享】基于人眼主观视觉的画质评价与提升
  8. 数据结构与算法之转圈打印矩阵和旋转正方形矩阵
  9. MongoDB 基础浅谈
  10. 我在腾讯做运维--快速玩转蓝鲸社区版6.0【直播公开课】