【leetcode】Find Minimum in Rotated Sorted Array I & II (middle)
1. 无重复
Suppose a sorted array 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.
思路:这个是找最小,和找指定数字其实差不多的。画个示意图吧

二分查找,关键是扔掉不包含最小值的那一半。
1.如果右半部分满足 n[m] < n[r] 则右半部分是递增的, 让 r = m 因为m位置有可能是最小的,把递增的那半扔掉。
2.否则,左边是递增的,直接让 l = m + 1 因为m处比原本的 l 大,不可能是最小值。
如果这个序列是顺序的,会归为情况1. 如果右半部分不是递增的则 大|小 的部分一定在右边,最小值不会在左边区域。
最后l = r 时 就是最小值位置。
优化版代码:
int findMin(vector<int> &num) {
int lo =, hi = num.size()-;
while(lo<hi){
int mid = lo + (hi - lo) / ;
if(num[mid]>num[hi]) lo=mid+;
else hi=mid;
}
return num[lo];
}
我的原版代码:
int findMin(vector<int> &num) {
int l = , r = num.size() - ;
while(l <= r)
{
if(l == r) return num[l];
int m = (l + r) / ;
if(num[r] > num[m]) //右边是上升区
{
r = m;
}
else
{
l = m + ;
}
}
}
2. 有重复
原本的有序数列是这样的,我们只展现一段相同数字,多段相同数字是同理的。

1. 如果n[m] < n[r] , 那么右半部分是递增的,处理跟无重复数字一样 r = m;
2. 如果n[m] > n[r] , 说明 大|小 的衔接处在右边,扔掉左边 l = m + 1;
3. 如果n[m] == n[r] 有几种可能

这时,我们跳过复杂的判断,直接让 r-- 再进行下一次判断。 如果所有数字都一样的话,最坏的计算复杂度为O(n)
int findMinDuplicates(vector<int> &num) {
int l = , r = num.size() - ;
while(l < r)
{
int m = l + (r - l) / ;
if(num[r] > num[m]) //右边是上升区
{
r = m;
}
else if(num[r] == num[m])
{
r--;
}
else
{
l = m + ;
}
}
return num[l];
}
【leetcode】Find Minimum in Rotated Sorted Array I & II (middle)的更多相关文章
- 【leetcode】Find Minimum in Rotated Sorted Array I&&II
题目概述: Suppose a sorted array is rotated at some pivot unknown to you beforehand.(i.e., 0 1 2 4 5 6 7 ...
- 【leetcode】Find Minimum in Rotated Sorted Array II JAVA实现
一.题目描述 Follow up for "Find Minimum in Rotated Sorted Array":What if duplicates are allowed ...
- 【LeetCode】Find Minimum in Rotated Sorted Array 在旋转数组中找最小数
Add Date 2014-10-15 Find Minimum in Rotated Sorted Array Suppose a sorted array is rotated at some p ...
- 【LeetCode】Find Minimum in Rotated Sorted Array 解题报告
今天看到LeetCode OJ题目下方多了"Show Tags"功能.我觉着挺好,方便刚開始学习的人分类练习.同一时候也是解题时的思路提示. [题目] Suppose a sort ...
- 【LeetCode】Find Minimum in Rotated Sorted Array 找到旋转后有序数组中的最小值
本文为大便一箩筐的原创内容,转载请注明出处,谢谢:http://www.cnblogs.com/dbylk/p/4032570.html 原题: Suppose a sorted array is ...
- 【LeetCode】33. Search in Rotated Sorted Array 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...
- 【LeetCode】977. Squares of a Sorted Array 解题报告(C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 排序 日期 题目地址:https://leetcod ...
- 【LeetCode】153. Find Minimum in Rotated Sorted Array 解题报告(Python)
[LeetCode]153. Find Minimum in Rotated Sorted Array 解题报告(Python) 标签: LeetCode 题目地址:https://leetcode. ...
- 【LeetCode】81. Search in Rotated Sorted Array II (2 solutions)
Search in Rotated Sorted Array II Follow up for "Search in Rotated Sorted Array":What if d ...
随机推荐
- 说说移动前端中 viewport (视口)
转载网络资源的文章:来源不详~~ 移动前端中常说的 viewport (视口)就是浏览器显示页面内容的屏幕区域.其中涉及几个重要概念是 dip ( device-independent pixel 设 ...
- A funny story in regard to a linux newbie
ZZ from here : ask what kernel ring buffer is A few days ago I started thinking that my linux educa ...
- Python网络socket学习
Python 网络编程 Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的 ...
- Hadoop 面试题之Hbase
Hadoop 面试题之九 16.Hbase 的rowkey 怎么创建比较好?列族怎么创建比较好? 答: 19.Hbase 内部是什么机制? 答: 73.hbase 写数据的原理是什么? 答: 75.h ...
- webservice测试实例
webservice测试实例(LR8.1) 接口声明:这个接口是sina的短信服务接口,我只是用来做脚本学习使用,不会对其产生压力:希望读者也只是用来进行录制学习,而不是产生压力. 接口文档:http ...
- Ajax的使用
Ajax是JQuery实现XMLHttpRequest的一种方式. 增加HTML5按钮,含有点击事件: <button type="button" class="b ...
- keepalived安装
两台虚拟机 两台配置操作一样 环境配置 [root@lb01 /]# yum -y install openssl openssl-devel [root@lb01 /]# yum -y instal ...
- FineUI第十八天---表格之事件的处理
表格之事件的处理: 1.事件参数: GridPageEventArgs:表格分页事件参数,对应onPageIndexChange事件. NewPageIndex:新页面的索引 GridSortEven ...
- HackerRank training-the-army
Description 有 \(n\) 个技能,每次可以通过一个巫师,将一个技能转化成另一个技能,问最有最多有多少不同的技能. Sol 网络流. 先说说我一开始非常 naive 的建图,将技能拆点,中 ...
- 腾讯云环境配置之PHP5.6.3 + redis扩展 稳定版
腾讯云环境配置之PHP5.6.3 + redis扩展 稳定版 时间:2015-01-18 01:41来源:linux.it.net.cn 作者:IT #由于上文装过yum groupinstall ...