[LeetCode]154 有序数组旋转后的最小值 II
2016-03-06 15:06
531 查看
Find Minimum in Rotated Sorted Array II(找到有序数组旋转后的最小值 II)
【难度:Medium】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.
153题的扩展,在原题基础上允许数组中出现重复数字。
解题思路
使用二分查找时,在153题的基础上增加中间值和末端值相等的情况时的处理。同样使用常规查找时不需改变。c++代码如下:
//二分查找 class Solution { public: int findMin(vector<int>& nums) { int low = 0; int high = nums.size()-1; while (low < high) { int mid = (low+high)/2; if (nums[mid] > nums[high]) low = mid+1; else if (nums[mid] < nums[high]) high = mid; else high--; } return nums[high]; } };
//常规查找 class Solution { public: int findMin(vector<int>& nums) { int min = INT_MAX; for (int i = 0; i < nums.size(); i++) if (min > nums[i]) min = nums[i]; return min; } };
相关文章推荐
- 构建之法阅读笔记(1)
- C++primer plus 编程练习10.10
- 将字符串的标点去掉并且输出剩余部分字符
- 数据库中的左连接和右连接的差别
- js 去掉字符串前后空格
- 数组中的趣味题二
- DOM(文档对象模型节点)
- 2015年12月27日
- linux 文件系统及基础命令 (亢龙有悔.)
- 简单选择排序
- 哈希表
- 【历届试题】核桃的数量
- Codeforces--617B--Chocolate(规律)
- String详解
- [国嵌攻略][109][Linux系统调用]
- SAP MM事务代码清单
- Codeforces--617B--Chocolate(规律)
- 详解java模板和回调机制
- 五、排序算法(选择排序、插入排序、希尔排序)
- Java提高篇----抽象类与接口