153. Find Minimum in Rotated Sorted Array(js)

153. Find Minimum in Rotated Sorted Array

Suppose an array sorted in ascending order 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.

Example 1:

Input: [3,4,5,1,2] 
Output: 1

Example 2:

Input: [4,5,6,7,0,1,2]
Output: 0
题意:给定一个旋转后的数组,返回最小项,不能暴力遍历,时间复杂度要求O(lgn)
代码如下:
/**
 * @param {number[]} nums
 * @return {number}
 */
var findMin = function(nums) {
    let left = 0,right=nums.length-1;
//     如果最后一项大于第一项,说明没有旋转,直接返回第一项,否则继续二分查找
    if(nums[left]>nums[right]){
//         最后会剩下相邻两项,较小的项即为最小项
        while(left+1!==right){
            let mid=parseInt((left+right)/2);
            if(nums[left]>nums[mid]) right=mid;
            else left=mid; 
        }
        return Math.min(nums[left],nums[right]);
    }
    return nums[0]
};

猜你喜欢

转载自www.cnblogs.com/xingguozhiming/p/11256537.html
今日推荐