Find Minimum in Rotated Sorted Array 2 寻找旋转有序数组的最小值之二
来源:互联网 发布:it 服务 编辑:程序博客网 时间:2024/06/05 22:36
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.
这道寻找旋转有序重复数组的最小值是对之前那道问题的延伸,当数组中存在大量的重复数字时,就会破坏二分查找法的机制,我们无法取得O(lgn)的时间复杂度,又将会回到简单粗暴的O(n),比如如下两种情况:
{2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 2} 和 {2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2}, 我们发现,当第一个数字和最后一个数字,还有中间那个数字全部相等的时候,二分查找法就崩溃了,因为它无法判断到底该去左半边还是右半边。这种情况下,我们只能回到最原始的那种简单粗暴的方法,把整个数组从头到尾撸一遍,找出最小的那个。代码如下:
class Solution {public: int findMin(vector<int> &num) {if (num.size() <= 0) return 0;if (num.size() == 1) return num[0]; int left = 0, right = num.size() - 1;if (num[left] > num[right]) {while (left != (right - 1)) {int mid = (left + right) / 2;if (num[left] <= num[mid]) left = mid;else right = mid;}return min(num[left], num[right]);} else if (num[left] == num[right]) {int res = num[0];for (int i = 1; i < num.size(); ++i) {res = min(res, num[i]);}return res;}return num[0]; }};
0 0
- Find Minimum in Rotated Sorted Array 2 寻找旋转有序数组的最小值之二
- Array----- 153. Find Minimum in Rotated Sorted Array(查找旋转后的有序数组中最小值)
- LeetCode OJ 之 Find Minimum in Rotated Sorted Array (查找旋转有序数组中的最小值)
- 寻找循环有序数组的最小值 Find Minimum in Rotated Sorted Array
- LeetCode OJ 之 Find Minimum in Rotated Sorted Array II(查找旋转有序数组中的最小值 - 二)
- [Java语言] [Leetcode] Find Minimum in Rotated Sorted Array 找旋转有序数组的最小值
- 【LintCode】 Find Minimum in Rotated Sorted Array 寻找旋转排序数组中的最小值
- 159.Find Minimum in Rotated Sorted Array-寻找旋转排序数组中的最小值(中等题)
- Find Minimum in Rotated Sorted Array (旋转数组最小值)
- 字符串算法——查找有序数组旋转后的最小值(无重复元素)(Find Minimum in Rotated Sorted Array)
- [leetcode 153]Find Minimum in Rotated Sorted Array----求旋转数组的最小值
- LeetCode-153:Find Minimum in Rotated Sorted Array (可能旋转的排序数组中的最小值) -- medium
- 字符串算法——查找有序数组旋转后最小值(有重复元素)(Find Minimum in Rotated Sorted Array II)
- 160.Find Minimum in Rotated Sorted Array II-寻找旋转排序数组中的最小值 II(中等题)
- 数组-Find Minimum in Rotated Sorted Array(旋转数组求最小值)
- leetcode—153. Find Minimum in Rotated Sorted Array 在翻转数组寻找最小值
- Find Minimum in Rotated Sorted Array 旋转数组中找最小值 @LeetCode
- 153. Find Minimum in Rotated Sorted Array--在旋转数组中找最小值
- Linux 安全基础--用户(用户组)
- MyEclipse设置编码方式
- 常用的主机监控Shell脚本
- xCode控制台学习object-c (step by step)
- EXCEL计算不重复项
- Find Minimum in Rotated Sorted Array 2 寻找旋转有序数组的最小值之二
- HDoj-2084-数塔-dp
- Oracle数据库只Dual表
- qt的QPushButton样式
- 自定义Win7 Alt+Tab程序显示数
- ubuntu下SVN服务器安装配置
- Vision引擎中粒子编辑器-粒子选项介绍
- Android比较字符串是否为空(isEmpty)
- UE4虚幻引擎如何永久保存自定义界面布局?