LeetCode 153. Find Minimum in Rotated Sorted Array (在旋转有序数组中找到最小值)
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.
(i.e., 0 1 2 4 5 6 7
might become 4 5 6 7 0 1 2
).
Find the minimum element.
You may assume no duplicate exists in the array.
题目标签:Array, Binary Search
题目给了我们一个 旋转有序 数组,让我们找到最小值。如果是在还没有旋转的情况下,那么我们知道,最小值就是第一个数字。
那么当遇到旋转的情况呢,我们就需要找到那个 “断点” 的两个数字,换句话说,就是最大值和最小值,而且这两个数字一定是相邻的。
我们来看一下例子:
0 1 2 4 5 6 7 直接返回第一个数字
1 2 4 5 6 7 0 返回7 和0 中小的那个数字
2 4 5 6 7 0 1
4 5 6 7 0 1 2
5 6 7 0 1 2 4
6 7 0 1 2 4 5
7 0 1 2 4 5 6
利用二分法来找到 最大和最小的 两个数字。
rule 1: 如果 mid 小于 left, 意味着最大的数字在左边,继续去左边找,把right = mid, 这里要包括mid,因为mid 可能是最小的数字;
rule 2: 如果 mid 大于 right, 意味着最小的数字在右边,继续去右边找,把left = mid, 这里要包括mid, 因为mid 可能是最大的数字。
当left 和right 相邻的时候,返回小的数字就可以了。
Java Solution:
Runtime beats 53.07%
完成日期:08/30/2017
关键词:Array, Binary search
关键点:旋转中,min 和 max 必然是相邻的,利用二分法找到min 和max
class Solution
{
public int findMin(int[] nums)
{
if(nums.length == 1)
return nums[0]; int left = 0;
int right = nums.length - 1; if(nums[left] < nums[right])
return nums[0]; while(left + 1 != right)
{
int mid = left + (right - left) / 2; if(nums[mid] < nums[left]) // if left is greater than mid, move to left
right = mid;
else if(nums[mid] > nums[right]) // if mid one is greater than right, move to right
left = mid;
} // if there are only two number
return Math.min(nums[left], nums[right]);
}
}
参考资料:N/A
LeetCode 算法题目列表 - LeetCode Algorithms Questions List
最新文章
- nginx配置文件结构
- 微信智慧KTV上线 不怕周末订不到包厢了
- php获取在线xml的数据
- excel表里的数据导入到数据库里
- WinMain初始化详细过程以及消息循环
- 动态加载dll,并创建类对象放入到list中。
- Struts2 教程
- cocos2d-x 2.2 开发手记2
- iOS OC开发代码规范
- 安卓MP3播放器开发实例(1)之音乐列表界面
- 数据同步DataX
- spring3.1........jar包下载
- 2018 ICPC 焦作网络赛 E.Jiu Yuan Wants to Eat
- 利用 JMetal 实现大规模聚类问题的研究(一)JMetal配置
- ansible-role写法
- mysql-ubuntu卸载安装mysql
- Python中read()、readline()和readlines()三者间的区别和用法
- Keras 2.0版本运行
- 扩展music-list.vue让列表前三名显示&#127942;奖杯
- 奇怪的问题:改变了界面,生成的exe不起作用
热门文章
- 多个版本的Python如何设置不冲突
- Eclipse Oxygen 解决 自动导包的问题
- 初学node.js有感二
- 【转】Spark运行过程
- #翻译#原文来自Database.System.Concepts(6th.Edition.2010)2.6Relational Operations,原文作者Abraham Silberschaz , Henry F. Korth , S. Sudarshan
- 你真的会阅读Java的异常信息吗?
- 【POJ】 1061 青蛙的约会(扩欧)
- The area 积分积分
- S2_OOP第二章
- Python 实现的随机森林