【双百解法】剑指 Offer 11. 旋转数组的最小数字
立志用最少的代码做最高效的表达
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [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. 旋转数组的最小数字相关推荐
- 【LeetCode】剑指 Offer 11. 旋转数组的最小数字
[LeetCode]剑指 Offer 11. 旋转数组的最小数字 文章目录 [LeetCode]剑指 Offer 11. 旋转数组的最小数字 一.遍历 二.二分法 总结 一.遍历 算法步骤: 遍历数组 ...
- 《LeetCode力扣练习》剑指 Offer 11. 旋转数组的最小数字 Java
<LeetCode力扣练习>剑指 Offer 11. 旋转数组的最小数字 Java 一.资源 题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 给你一个可能存在 ...
- 剑指 Offer 11. 旋转数组的最小数字 简单
剑指 Offer 11. 旋转数组的最小数字 题目 解题思路 方法(一)直接遍历法 方法(二)二分查找法 题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组 ...
- 剑指offer 11. 旋转数组的最小数字(很详细!)
剑指offer 11. 旋转数组的最小数字 题目 解题思路 代码 题目 解题思路 一开始,我们就能直接想到,数组找最小值,那么不轻轻松松直接遍历一遍,用一个变量记录最小值,然后直接返回不就完事了? 但 ...
- 【剑指 Offe】剑指 Offer 11. 旋转数组的最小数字
目录标题 算法汇总 题目 关键点 代码 1.解体方法 - 二分法 思路 代码 时间和空间复杂度 2.解题方法,如暴力法 思路 代码 时间和空间复杂度 算法汇总 以下是所有算法汇总,包括GitHub源码 ...
- 剑指offer——11.旋转数组的最小数字
题目: 题1:实现快速排序 题2:年龄排序问题. 题3:旋转数组的最小数字 知识点: 快速排序算法,参考:https://blog.csdn.net/shujuelin/article/details ...
- Leetcode 剑指 Offer 11. 旋转数组的最小数字 (每日一题 20210916)
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转, ...
- 剑指 Offer 11. 旋转数组的最小数字 LCOF
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转, ...
- leetcode剑指 Offer 11. 旋转数组的最小数字(二分查找)
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转, ...
最新文章
- 粒子滤波在图像跟踪领域的实践
- qt dll 1% 不是有效的win32应用程序
- oracle 连接池sql跟踪,实现SQLServer、MySQL和oracle数据库连接池
- SpringMVC 理论与实用技术(一) 简单、实用、易懂的几个实例
- 主题模型 LDA,Dirichlet分布 和朴素贝叶斯算法
- Web技术电子期刊2008年第3期(总第23期)
- oracle logminer java_Oracle logminer
- gin post 数据参数_golang--gin获取post里body的参数
- JavaScript数组归并方法reduce
- [第1节]时间、空间复杂度,斐波那契、爬楼梯
- 网上偶看一文,有感。特贴在下面。
- 自制病毒——控制桌面鼠标以及开关机
- 弱监督学习的介绍及应用
- 微信小程序image背景图片全屏显示(根据设备高度自适应背景图片)
- 一看就懂的保姆级教程:open vn设置 (亲测通过)
- Hadoop生态系统功能组件,主要包括哪些?
- OSChina 周三乱弹 ——送你们个漂亮妹子!
- 金融信贷业务-贷中整理
- Linux之无人值守安装系统
- Hexo yilia 主题添加来必力评论系统
热门文章
- 聊聊 HTTP 常见的请求方式
- 不是keys,记一次因 redis 使用不当导致应用卡死 的过程
- 面试官:为什么 wait() 方法需要写在循环里?
- 飞哥:程序员完全没时间提升自己该怎么办?
- 阿里云linux上安装与配置Mysql
- TikTok 英国业务亏损、苹果从中国应用商店下架近4万款游戏、Zoom 接受调查等|Decode the Week...
- 【线上分享】基于人眼主观视觉的画质评价与提升
- 数据结构与算法之转圈打印矩阵和旋转正方形矩阵
- MongoDB 基础浅谈
- 我在腾讯做运维--快速玩转蓝鲸社区版6.0【直播公开课】