LeetCode之Find Minimum in Rotated Sorted Array II
2017-07-06 19:11
489 查看
本题的意思是给定一个升序排序的数组,然后以某个元素为分界点,将这个元素后面的元素平移到数组最前边,而我们并不知道这个分界元素是哪个,在变换后的数组中寻找最小值。
我采用二分查找的算法解决此题。首先将查找范围确定到整个数组,计算出中间下标,根据变换前数组元素升序的特点,判断变换后数组中间元素与最右端元素的大小:如果中间的大,说明最小元素在中间元素的右边,将查找范围缩小到中间元素与最右端元素之间,继续循环;如果中间的小,说明最小元素在中间元素的左边,将查找范围缩小到最左边元素与中间元素之间,继续循环;如果中间元素与最右端元素相等,那么最小元素在中间元素的左边或右边都有可能,无法判断如何缩小查找范围的情况下,只能将查找范围的最右端向左缩减一个元素。当查找范围缩小到只剩一个元素时,该元素即为最小元素。
class Solution {
public:
int findMin(vector<int>& nums) {
int low = 0;
int high = nums.size() - 1;
int middle = 0;
while (low < high) {
middle = low + (high - low) / 2;
if (nums[middle] > nums[high]) {
low = middle + 1;
} else if (nums[middle] < nums[high]) {
high = middle;
} else {
high--;
}
}
return nums[low];
}
};
我采用二分查找的算法解决此题。首先将查找范围确定到整个数组,计算出中间下标,根据变换前数组元素升序的特点,判断变换后数组中间元素与最右端元素的大小:如果中间的大,说明最小元素在中间元素的右边,将查找范围缩小到中间元素与最右端元素之间,继续循环;如果中间的小,说明最小元素在中间元素的左边,将查找范围缩小到最左边元素与中间元素之间,继续循环;如果中间元素与最右端元素相等,那么最小元素在中间元素的左边或右边都有可能,无法判断如何缩小查找范围的情况下,只能将查找范围的最右端向左缩减一个元素。当查找范围缩小到只剩一个元素时,该元素即为最小元素。
class Solution {
public:
int findMin(vector<int>& nums) {
int low = 0;
int high = nums.size() - 1;
int middle = 0;
while (low < high) {
middle = low + (high - low) / 2;
if (nums[middle] > nums[high]) {
low = middle + 1;
} else if (nums[middle] < nums[high]) {
high = middle;
} else {
high--;
}
}
return nums[low];
}
};
相关文章推荐
- 【LeetCode】【Solution】Find Minimum in Rotated Sorted Array I & II
- Find Minimum in Rotated Sorted Array II c++ leetcode
- LeetCode "Find Minimum in Rotated Sorted Array II"
- [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
- Leetcode-Find Minimum in Rotated Sorted Array II
- Leetcode_find-minimum-in-rotated-sorted-array-ii(c++ version)
- Leetcode: Find Minimum in Rotated Sorted Array II
- 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
- [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 I & II
- Find Minimum in Rotated Sorted Array II -- LeetCode
- Leetcode: Find Minimum in Rotated Sorted Array II
- leetcode:Find Minimum in Rotated Sorted Array II
- 【Leetcode】Find Minimum in Rotated Sorted Array II