Find Minimum in Rotated Sorted Array (旋转数组最小值)
2016-12-04 14:25
585 查看
题目: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 7 might become 4 5 6 7 0 1 2).
Find the minimum element.
You may assume no duplicate exists in the array.
解题思路:
使用二分查找,需要注意的是为了防止rotated sorted array退化成这种情况,1,2,3,4,5.
在比较的时候需要先和end比较。
代码:
题目:Find Minimum in Rotated Sorted Array II
还是上面的题目,唯一的改变是如果rotated sorted array 中有重复的数字呢。
解题思路:
还是使用二分查找,需要注意的是还是开始和end比较,情况同上。
mid等于end的时候,end往前一步。
————EOF————
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.
You may assume no duplicate exists in the array.
解题思路:
使用二分查找,需要注意的是为了防止rotated sorted array退化成这种情况,1,2,3,4,5.
在比较的时候需要先和end比较。
代码:
public int findMin(int[] nums) { if (nums == null || nums.length == 0) { return -1; } int start = 0; int end = nums.length - 1; int mid; while (start + 1 < end) { mid = start + ((end - start) >> 1); //为了防止rotated array 蜕化成这种 //1 2 3 4 5 6 //需要先和end 比较 if (nums[mid] <= nums[end]) { end = mid; } else { start = mid; } } if (nums[start] < nums[end]) { return nums[start]; } return nums[end]; }
题目:Find Minimum in Rotated Sorted Array II
还是上面的题目,唯一的改变是如果rotated sorted array 中有重复的数字呢。
解题思路:
还是使用二分查找,需要注意的是还是开始和end比较,情况同上。
mid等于end的时候,end往前一步。
public int findMin(int[] nums) { if (nums == null || nums.length == 0) { return -1; } int start = 0; int end = nums.length - 1; int mid; while (start + 1 < end) { mid = start + ((end -start) >> 1); if (nums[mid] < nums[end]) { end = mid; } else if (nums[mid] > nums[end]) { start = mid; } else { //如果相等则 end 往前一步 --end; } } if (nums[start] < nums[end]) { return nums[start]; } return nums[end]; }
————EOF————
相关文章推荐
- 字符串算法——查找有序数组旋转后的最小值(无重复元素)(Find Minimum in Rotated Sorted Array)
- 【LeetCode-面试算法经典-Java实现】【153-Find Minimum in Rotated Sorted Array(找旋转数组中的最小数字)】
- Find Minimum in Rotated Sorted Array 旋转数组中找最小值 @LeetCode
- [LeetCode] Find Minimum in Rotated Sorted Array II 寻找旋转有序数组的最小值之二
- 字符串算法——查找有序数组旋转后最小值(有重复元素)(Find Minimum in Rotated Sorted Array II)
- Find Minimum in Rotated Sorted Array 2 寻找旋转有序数组的最小值之二
- LeetCode-Find Minimum in Rotated Sorted Array II-旋转排序数组找最小-二分查找
- [leetcode 153]Find Minimum in Rotated Sorted Array----求旋转数组的最小值
- LeetCode OJ 之 Find Minimum in Rotated Sorted Array II(查找旋转有序数组中的最小值 - 二)
- [Java语言] [Leetcode] Find Minimum in Rotated Sorted Array 找旋转有序数组的最小值
- Find Minimum in Rotated Sorted Array 旋转数组中找最小值 @LeetCode
- Find Minimum in Rotated Sorted Array(旋转数组的最小数字)
- 【LeetCode-面试算法经典-Java实现】【154-Find Minimum in Rotated Sorted Array II(找旋转数组中的最小数字II)】
- 【LeetCode】Find Minimum in Rotated Sorted Array 在旋转数组中找最小数
- 寻找循环有序数组的最小值 Find Minimum in Rotated Sorted Array
- LeetCode-153:Find Minimum in Rotated Sorted Array (可能旋转的排序数组中的最小值) -- medium
- 【LintCode】 Find Minimum in Rotated Sorted Array 寻找旋转排序数组中的最小值
- Find Minimum in Rotated Sorted Array 循环数组中查找最小的数
- 数组-Find Minimum in Rotated Sorted Array(旋转数组求最小值)
- 153.寻找旋转排序数组中的最小值(Find Minimum in Rotated Sorted Array)