Leetcode(12) - Find Minimum in Rotated Sorted Array II
2017-05-22 23:14
363 查看
https://leetcode.com/problems/find-minimum-in-rotated-sorted-array-ii/#/description
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 an array sorted in ascending order is rotated at some pivot unknown to you beforehand.
(i.e.,
Find the minimum element.
The array may contain duplicates.
Solution:
与上一题类似,采用二分法解题,我们要保证最小值始终在start和end之间,然后循环考察分以下4种情况:
1、nums[start] < nums[end], 说明最小值就是start
2、nums[mid] > nums[end],说明最小值在[mid + , end]之间
3、nums[mid] > nums[end],最小值可能在[mid, end - 1]之间,这种情况需要继续检测
4、非1,2,则最小值在[start, mid]之间
最后返回nums[start]
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 an array sorted in ascending order 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.
The array may contain duplicates.
Solution:
与上一题类似,采用二分法解题,我们要保证最小值始终在start和end之间,然后循环考察分以下4种情况:
1、nums[start] < nums[end], 说明最小值就是start
2、nums[mid] > nums[end],说明最小值在[mid + , end]之间
3、nums[mid] > nums[end],最小值可能在[mid, end - 1]之间,这种情况需要继续检测
4、非1,2,则最小值在[start, mid]之间
最后返回nums[start]
int FindMinimumInRotatedSortedArray2::findMin(std::vector<int>& nums) { int start = 0, end = nums.size() - 1; while (start < end) { if(nums[start] < nums[end]) { break; } int mid = (start + end) / 2; if(nums[mid] > nums[end]) { start = mid + 1; } else if(nums[mid] == nums[end]) { end--; } else { end = mid; } } return nums[start]; }
相关文章推荐
- 【LeetCode】【Solution】Find Minimum in Rotated Sorted Array I & II
- [leetcode] Find Minimum in Rotated Sorted Array II
- LeetCode 新题: Find Minimum in Rotated Sorted Array II 解题报告-二分法模板解法
- leetcode--Find Minimum in Rotated Sorted Array II
- LeetCode "Find Minimum in Rotated Sorted Array II"
- Leetcode-Find Minimum in Rotated Sorted Array II
- LeetCode 154 Find Minimum in Rotated Sorted Array II
- [LeetCode] Find Minimum in Rotated Sorted Array II
- leetcode:Find Minimum in Rotated Sorted Array II
- leetcode Find Minimum in Rotated Sorted Array II
- [LeetCode] Find Minimum in Rotated Sorted Array II 寻找旋转有序数组的最小值之二
- leetcode:Find Minimum in Rotated Sorted Array II
- Leetcode_find-minimum-in-rotated-sorted-array-ii(c++ version)
- 153_leetcode_Find Minimum in Rotated Sorted Array II
- Leetcode | Find Minimum in Rotated Sorted Array I && II
- LeetCode-Find Minimum in Rotated Sorted Array II-旋转排序数组找最小-二分查找
- Find Minimum in Rotated Sorted Array II -- LeetCode
- [leetcode]Find Minimum in Rotated Sorted Array II @ Python
- [LeetCode] Find Minimum in Rotated Sorted Array II (包含递增和递减旋转,含有重复数字)
- 【leetcode】Find Minimum in Rotated Sorted Array I&&II