【LeetCode】Find Minimum in Rotated Sorted Array 在旋转数组中找最小数
2014-10-16 22:24
411 查看
Add Date 2014-10-15
Find Minimum in Rotated Sorted Array
Suppose a sorted array is rotated at some pivot unknown to you beforehand.
(i.e.,
Find the minimum element.
You may assume no duplicate exists in the array.
这个很简单,因为没有重复数字,数组本质上还是有序的,用类似二分查找的方法复杂度O(log n)。记得考虑一下整个数组没有 rotated 的情况。
20号又加了有重复数字的题II,直接附II的 code 吧,II中需要考虑前中后三个数相等的情况,此时无法确定最小值在哪边,只能遍历一遍。
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 7might become
4 5 6 7 0 1 2).
Find the minimum element.
You may assume no duplicate exists in the array.
这个很简单,因为没有重复数字,数组本质上还是有序的,用类似二分查找的方法复杂度O(log n)。记得考虑一下整个数组没有 rotated 的情况。
20号又加了有重复数字的题II,直接附II的 code 吧,II中需要考虑前中后三个数相等的情况,此时无法确定最小值在哪边,只能遍历一遍。
class Solution { public: int findMinN(vector<int> &num, int min, int max) { int minN = num[min]; for(int i = min+1; i <= max; ++i) { if(num[i] < minN) minN = num[i]; } return minN; } int findMin(vector<int> &num, int min, int max) { if(min == max || num[min] < num[max]) return num[min]; int mid = (max+min)>>1; if(num[mid] < num[min]) { return findMin(num, min, mid); } else if(num[mid] > num[max]) { return findMin(num, mid+1, max); } else return findMinN(num, min, max); } int findMin(vector<int> &num) { int len = num.size(); return findMin(num, 0, len-1); } };
相关文章推荐
- 【LeetCode-面试算法经典-Java实现】【153-Find Minimum in Rotated Sorted Array(找旋转数组中的最小数字)】
- 【LeetCode-面试算法经典-Java实现】【154-Find Minimum in Rotated Sorted Array II(找旋转数组中的最小数字II)】
- [leetcode 153]Find Minimum in Rotated Sorted Array----求旋转数组的最小值
- [Java语言] [Leetcode] Find Minimum in Rotated Sorted Array 找旋转有序数组的最小值
- LeetCode-Find Minimum in Rotated Sorted Array II-旋转排序数组找最小-二分查找
- [LeetCode] Find Minimum in Rotated Sorted Array II 寻找旋转有序数组的最小值之二
- Find Minimum in Rotated Sorted Array 2 寻找旋转有序数组的最小值之二
- LeetCode OJ 之 Find Minimum in Rotated Sorted Array II(查找旋转有序数组中的最小值 - 二)
- Find Minimum in Rotated Sorted Array 旋转数组中找最小值 @LeetCode
- Find Minimum in Rotated Sorted Array(旋转数组的最小数字)
- 字符串算法——查找有序数组旋转后最小值(有重复元素)(Find Minimum in Rotated Sorted Array II)
- Find Minimum in Rotated Sorted Array (旋转数组最小值)
- LeetCode-153:Find Minimum in Rotated Sorted Array (可能旋转的排序数组中的最小值) -- medium
- 字符串算法——查找有序数组旋转后的最小值(无重复元素)(Find Minimum in Rotated Sorted Array)
- Find Minimum in Rotated Sorted Array 旋转数组中找最小值 @LeetCode
- [LeetCode] Find Minimum in Rotated Sorted Array II (包含递增和递减旋转,含有重复数字)
- 【LintCode】 Find Minimum in Rotated Sorted Array 寻找旋转排序数组中的最小值
- 寻找循环有序数组的最小值 Find Minimum in Rotated Sorted Array
- Find Minimum in Rotated Sorted Array II 旋转数组中找最小值(有重复元素) @LeetCode
- LeetCode OJ 之 Find Minimum in Rotated Sorted Array (查找旋转有序数组中的最小值)