[LeetCode][JavaScript]Find Minimum in Rotated Sorted Array

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.

https://leetcode.com/problems/find-minimum-in-rotated-sorted-array/


在一个(可能)倒转过的有序序列中找出最小的数。

最直观的做法是遍历所有的数找出最小,本题需要比这更优化的解法。

二分查找,如果没有倒转,直接返回第一个最小的数。

如果是倒转过的序列,找出递增序列的最后一个最大的数,再往右一个就是最小的数。

 1 /**
 2  * @param {number[]} nums
 3  * @return {number}
 4  */
 5 var findMin = function(nums) {
 6     var start = 0, end = nums.length - 1, middle;
 7     while(start < end){
 8         if(nums[start] < nums[end])
 9             return nums[start];
10         middle = (start + end) >> 1;
11         if(nums[start] <= nums[middle])
12             start = middle + 1;
13         else 
14             end = middle;
15     }
16     return nums[start];
17 };
原文地址:https://www.cnblogs.com/Liok3187/p/5259112.html