154. Find Minimum in Rotated Sorted Array II

文章目录

  • 题目理解
  • 二分+分治
  • 只有二分

154是 153的升级版本。

题目理解

输入:一个按升序排序的数组nums,但是这个数组在某个位置被旋转了。(例如., 原始数组是[0,1,2,4,5,6,7],旋转后就变成 [4,5,6,7,0,1,2])。注意:这个数组可能包含重复元素。
输出:这个数组的最小值
要求:O(lgn)时间复杂度
示例1
Input: [3,4,5,1,2]
Output: 1

示例2
Input: [2,2,2,0,1]
Output: 0

示例3

Input: [2,2,2,2,2]
Output: 2

二分+分治

这种思路完全可以按照之前在153的分析实现。在上一个版本的分析中,我们只有在需要判断一个子数组是否有序的时候使用大小比较:nums[l]<nums[r]。当有重复元素之后,我们还是使用同样的条件判断。例如[2,2,0,1,2]这样的子数组,nums[l]=nums[r],它是一个无序的。只有nums[l]<nums[r]才能推论得到从l到r是一个有序的子数组。
所以代码是一样的。

只有二分

原文链接

在标准的二分搜索中会用中间元素与目标值比较:nums[pivot]>target。在这里,中间元素与右边界元素比较:nums[pivot]与nums[high]。
情况一:nums[pivot]<nums[high]
在这里插入图片描述

这个时候子数组从pivot到high是一个有序数组,最小元素出现在左侧子数组中。同时,当前中间元素也可能是最小值元素。所以更新high=pivot。

情况二:nums[pivot]>nums[high]
在这里插入图片描述

nums[pivot]和最右边元素不在同一侧。一个数组从高到低,一定经历了最小元素。最小元素在右侧子数组中。

情况三:nums[pivot] = nums[high]
在这里插入图片描述

如果是图中case3的情况,最小元素在中间元素的左边。如果是图中case3’的情况,则最小元素在中间元素的右边。这个时候缩小右边界的范围:high=high-1。

class Solution {public int findMin(int[] nums) {int l = 0 ,r = nums.length-1;if(nums[r]>nums[l]) return nums[l];while(l<=r){int mid = l+((r-l)>>1);if(nums[mid]<nums[r]){r = mid;}else if(nums[mid]>nums[r]){l = mid+1;}else{r = r-1;}}return nums[l];}  
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/424349.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

@ResponseBody注解學習

轉載自https://www.cnblogs.com/qiankun-site/p/5774325.html這篇博客 本文僅是爲了自學整理知識點 ResponseBody 作用 將controller的方法返回的對象通過適當的轉換器轉換爲指定的格式之後&#xff0c;寫入到response對象的body區&#xff0c;通常用來返回JSON數據或者是XML數…

spring mvc学习(4):第一个spring mvc项目

一个Spring MVC的项目如何创建&#xff1f;请看这里。 代码编辑器&#xff1a;Intellij IDEA 请提前在电脑上配置好自己的tomcat&#xff01; 该文属于小白教程&#xff0c;适合初学者。 1 创建Spring MVC项目 第一步&#xff0c;点击新建项目。 第二步&#xff0c;选择Sp…

spring mvc学习(5):IDEA修改背景颜色大全

路径为File->settings->Editor->Color Scheme可以设置软件默认颜色&#xff0c;旁边的小齿轮添加颜色名字 IDEA设置一张背景图片,路径&#xff1a;File->Settings->Appearance&Behavior->Appearance 手动设置护眼绿的RGB颜色 路径&#xff1a;File->…

第七十三期:2019大裁员!年关将至,裁员比例竟达90%?

“现在行情不好啊&#xff0c;工作不好找&#xff0c;我都怀疑我自己了……” 如果这些话出自某个在职场混迹多年、对工作丧失激情的中年男人&#xff0c;似乎并不是难以理解。但是&#xff0c;这些话来自一批985院校毕业的学生&#xff0c;曾经的他们头顶名校光环&#xff0c;…

国际经管学院举办计量经济学术前沿研讨会

6月10日&#xff0c;由首都经济贸易大学国际经济管理学院组织的“计量经济学术前沿研讨会”在博远楼三号报告厅举办。此次研讨会汇集海内外知名学者&#xff0c;校长付志峰出席活动并致辞。 付志峰在致辞向远道而来的国内外专家学者表示欢迎。他讲到&#xff0c;首都经济贸易大…

第七十四期:国内SaaS企业终于活成了自己讨厌的样子!

总之&#xff0c;单纯的SaaS走不通了&#xff0c;为企业客户提供软件服务的这条路总是走得通的&#xff0c;反正SaaS企业就是要抢传统软件公司和软件外包公司的市场&#xff0c;换个姿势&#xff0c;继续降维打击就是了。 作者&#xff1a;佚名 SaaS&#xff0c;英文Software …

378. Kth Smallest Element in a Sorted Matrix

文章目录1题目理解2 思路分析2.1二分思路2.2计算小于等于middle值的个数3 拓展解决leetcode 6681题目理解 输入&#xff1a;一个nxn的矩阵&#xff0c;每一行从左到右按照升序排列&#xff0c;每一列从上到下按照升序排列。一个整数k。 输出&#xff1a;这个矩阵中第k小的数。…

20 年后,我们怎么看电影?

简评&#xff1a; 几十年来&#xff0c;虚拟现实一直被认为是电影业的未来所在&#xff0c;能够为观众提供比传统影视更身临其境的体验。在 1955 年的一篇题为《未来的电影》的文章中&#xff0c;电影摄影师海里戈就预言「未来的电影将会以生动活泼的形式为人们揭开新科学世界的…

第七十五期:网络 | 5G那些运营商不愿说的秘密

11月1日&#xff0c;国内几大基础运营商正式上线5G资费套餐&#xff1a;月套餐最低128元起&#xff0c;最高869元&#xff0c;这也标志着中国5G通信服务真正进入全民商用时代&#xff0c;不少急于尝鲜者还第一时间购入5G手机并办理相关套餐&#xff0c;率先体验传说中的极速5G网…

烦人的项目

最近被一些挑剔的用户搞了个半死。都要忙晕过去了。作项目真的是好累&#xff01;不知这种烦人的日子还要多久才能过去。转载于:https://www.cnblogs.com/Lancer/archive/2004/05/24/11152.html

第七十七期:可自动生成代码,5款基于AI的开发工具

如今&#xff0c;对机器学习潜力感兴趣的程序员都在讨论&#xff0c;如何使用人工智能和基于人工智能的软件开发工具构建应用程序。例如PyTorch和TensorFlow之类的解决方案。 作者&#xff1a;Sandra Parker 如今&#xff0c;对机器学习潜力感兴趣的程序员都在讨论&#xff0…

第七十八期:2019全球程序员薪酬报告:软件开发比机器学习抢手!40岁后收入下滑

Hired发布了《2019 年度薪酬状况报告》。调查显示&#xff1a;仅有23%的计算机科学相关专业硕士/博士表示高学历为其带来高薪&#xff1b;54%从业者表示不会继续深造&#xff1b;40岁后薪资呈现下降、60岁基本降到30岁水平。 作者&#xff1a;佚名 Hired发布了《2019 年度薪酬…

第七十九期:阿里程序员感慨:码农们过去暴富有多轻松,现在赚钱就有多辛苦

互联网的世界也是一座围城。有人挤破脑袋想要进去。而有人又觉得是被互联网的光鲜表象欺骗了忙着要出来&#xff0c;但最终&#xff0c;这些人都会离开。 作者&#xff1a;职场八卦 互联网的世界也是一座围城。有人挤破脑袋想要进去。而有人又觉得是被互联网的光鲜表象欺骗了…

[导入]画带阴影效果的文字

画带阴影效果的文字文章来源:http://blog.csdn.net/net_lover/archive/2004/07/06/35553.aspx 转载于:https://www.cnblogs.com/zhaoxiaoyang2/archive/2004/07/07/816094.html

第八十期:初创公司5大Java服务困局,阿里工程师如何打破?

初创公司遇到的每一个问题都可能攸关生死。创业之初更应该总结行业的常见问题&#xff0c;对比方案寻找最优解。 作者&#xff1a;常意 初创公司遇到的每一个问题都可能攸关生死。创业之初更应该总结行业的常见问题&#xff0c;对比方案寻找最优解。阿里巴巴地图技术专家常意在…

第八十一期:Java性能优化:35个小细节,提升你的Java代码运行效率

如果项目着眼于尽快无BUG上线&#xff0c;那么此时可以抓大放小&#xff0c;代码的细节可以不精打细磨&#xff1b;但是如果有足够的时间开发、维护代码&#xff0c;这时候就必须考虑每个可以优化的细节了&#xff0c;一个一个细小的优化点累积起来&#xff0c;对于代码的运行效…

Python数据类型与运算符号

一&#xff1a;数据类型 【1】为什么要有数据类型 &#xff08;1&#xff09;不同的数据含有不同的特征 例如&#xff1a;有文本数据 音频数据 视频数据 &#xff08;2&#xff09;不同的特征需要有不同的类型用来描述 二&#xff1a;数据类型的分类 【1】 &#xff08;1&#…

全面搞定jive3.1.1

全面搞定jive3.1.1yippit 原创 (参与分&#xff1a;351&#xff0c;专家分&#xff1a;1740) 发表&#xff1a;2003-9-13 下午8:33 版本&#xff1a;1.0 阅读&#xff1a;8316次 近日坛子里面很多人问起这个问题&#xff0c;要么中文显示乱码出错&#xff0c;要么不能数…

模板——树状数组求逆序对

题目链接&#xff1a;https://www.luogu.org/problemnew/show/P1908 1 #include <map>2 #include <set>3 #include <cmath>4 #include <queue>5 #include <string>6 #include <cstdio>7 #include <cstring>8 #include <iostream&…

818. Race Car

文章目录1 题目理解2 BFS3 dp3.1 基本情况3.2 递归方程分析3.2.1 先超过target再调头3.2.2 不超过target4 说明1 题目理解 先讲规则。一辆小汽车停在位置0&#xff0c;并且方向朝向右侧&#xff0c;并且速度为1。小汽车每次可以选择加速A&#xff0c;那加速一次&#xff0c;新…