【LeetCode】154. Find Minimum in Rotated Sorted Array II (3 solutions)
Find Minimum in Rotated Sorted Array II
Follow up for "Find Minimum in Rotated Sorted Array": What if duplicates are allowed?
Would this affect the run-time complexity? How and why?
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.
The array may contain duplicates.
解法一:暴力解法,直接使用algorithm库中的求最小元素函数
需要遍历整个vector
class Solution { public:int findMin(vector<int> &num) {if(num.empty())return 0;vector<int>::iterator iter = min_element(num.begin(), num.end());return *iter;} };
解法二:利用sorted这个信息。如果平移过,则会出现一个gap,也就是从最大元素到最小元素的跳转。如果没有跳转,则说明没有平移。
比上个解法可以省掉不少时间,平均情况下不用遍历vector了。
class Solution { public:int findMin(vector<int> &num) {if(num.empty())return 0;else if(num.size() == 1)return num[0];else{for(vector<int>::size_type st = 1; st < num.size(); st ++){if(num[st-1] > num[st])return num[st];}return num[0];}} };
解法三:二分查找
与Find Minimum in Rotated Sorted Array对照看,
一共有两处修改。
1、在无重复元素时,首尾元素相等代表指向同一个位置,因此程序直接返回即可。
然而当存在重复元素时,该条件并不能表示指向同一个位置,因此
nums[low] > nums[high]
改为
nums[low] >= nums[high]
2、在无重复元素时,中间元素与首元素相等,表示一共只有两个元素,low与high各指向一个。
由于while循环中限制的大小关系,因此返回nums[high]即为最小值。
然而当存在重复元素时,该条件并不能表示一共只有low和high指向的两个元素,
而是说明low指向的元素重复了,因此删除其一,low ++即可。
class Solution { public:int findMin(vector<int>& nums) {if(nums.empty())return 0;if(nums.size() == 1)return nums[0];int n = nums.size();int low = 0;int high = n-1;while(low < high && nums[low] >= nums[high]){int mid = low + (high-low)/2;if(nums[mid] < nums[low]) // mid is in second parthigh = mid;else if(nums[mid] == nums[low])low ++;elselow = mid+1;}return nums[low];} };
转载于:https://www.cnblogs.com/ganganloveu/p/4081483.html
【LeetCode】154. Find Minimum in Rotated Sorted Array II (3 solutions)相关推荐
- 154. Find Minimum in Rotated Sorted Array II
文章目录 题目理解 二分+分治 只有二分 154是 153的升级版本. 题目理解 输入:一个按升序排序的数组nums,但是这个数组在某个位置被旋转了.(例如., 原始数组是[0,1,2,4,5,6,7 ...
- LeetCode Find Minimum in Rotated Sorted Array II
Follow up for "Find Minimum in Rotated Sorted Array": What if duplicates are allowed? Woul ...
- 154 Find Minimum in Rotated Sorted Array 2
这道题与 153 Find Minimum in Rotated Sorted Array 基本相同,只是有可能有重复的数字, 这样a[left] 就可能与a[mid]相同 因此就多一个可能,因此在最 ...
- LeetCode——Find Minimum in Rotated Sorted Array II
Question Follow up for "Find Minimum in Rotated Sorted Array": What if duplicates are allo ...
- Find Minimum in Rotated Sorted Array II
Description: Follow up for "Find Minimum in Rotated Sorted Array": What if duplicates are ...
- (LeetCode 153)Find Minimum in Rotated Sorted Array
Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 migh ...
- LeetCode Find Minimum in Rotated Sorted Array
Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 migh ...
- 【leetcode】Search in Rotated Sorted Array II(middle)☆
Follow up for "Search in Rotated Sorted Array": What if duplicates are allowed? Would this ...
- LeetCode Search in Rotated Sorted Array II
Follow up for "Search in Rotated Sorted Array": What if duplicates are allowed? Would t ...
最新文章
- python下载大文件-使用python通过FTP下载大文件
- [BUUCTF-pwn]——bjdctf_2020_babyrop2
- ibatisnet 学习手记(1)
- 串口服务器应用领域及应用方案详解
- 一个基于Bmob的OPPO锁屏壁纸小程序,写过之后发现...好像没什么卵用...一脸懵逼
- 计算机视觉对扫描文件分类 OCR
- 计算机图形学学习报告,计算机图形学学习报告.doc
- 程序员进阶之路:四个程序员职业阶段,通常对应不同的薪资待遇!
- 用python一行代码实现1—100之和,你会吗
- 特征工程之自动特征生成(自动特征衍生)工具Featuretools介绍
- 趣味计算机课堂示范课,枯燥的理工学科,秒变趣味课堂
- 手动实现一维离散数据小波分解与重构
- Redis入门完整教程:CacheCloud是什么?
- 绘图板应用讲解计算机,计算机绘图应用教程——caxa电子图板xp.pptx
- 【历史上的今天】7 月 29 日:Win10 七周年;微软和雅虎的搜索协议;微软发行 NT 4.0
- 案例|山东省中医院基于ZABBIX构建网络设备监控预警平台
- 阴阳师辅助(基于按键精灵)
- 如何快速写出Json Schema,校验Json Schema
- 关于博客的论文php,基于php的个人博客系统毕业设计论文
- js/jQuery/vue练习
热门文章
- [4月21日]《51CTO 编辑部的外传》——剧本篇(上)
- [转]SQL Server 2005链接字符串
- windows下scrapy安装问题,以及Twisted安装报错(error: Microsoft Visual C++ 14.0 is required.)完美解决办法...
- 微信小程序wx.navigateTo路由循环嵌套问题解决
- volatile 的内存语义
- win10前面板耳机没声音
- 团队项目第一阶段冲刺站立会议08
- 玩转HTML5移动页面(转自http://tqtan.com/)
- 第六十一天 how can I 坚持
- layout-maxWidth属性用法