Tcdian / keep

今天不想做,所以才去做。
MIT License
5 stars 1 forks source link

154. Find Minimum in Rotated Sorted Array II #266

Open Tcdian opened 3 years ago

Tcdian commented 3 years ago

154. Find Minimum in Rotated Sorted Array II

假设按照升序排序的数组在预先未知的某个点上进行了旋转。

( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。

请找出其中最小的元素。

注意数组中可能存在重复的元素。

Example 1

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

Example 2

Input: [2,2,2,0,1]
Output: 0
Tcdian commented 3 years ago

Solution

/**
 * @param {number[]} nums
 * @return {number}
 */
var findMin = function(nums) {
    let left = 0;
    let right = nums.length - 1;
    while(left < right) {
        const mid = (left + right) >> 1;
        if (nums[mid] > nums[right]) {
            left = mid + 1;
        } else if (nums[mid] < nums[right]) {
            right = mid;
        } else {
            right -= 1;
        }
    }
    return nums[left];
};
function findMin(nums: number[]): number {
    let left = 0;
    let right = nums.length - 1;
    while(left < right) {
        const mid = (left + right) >> 1;
        if (nums[mid] > nums[right]) {
            left = mid + 1;
        } else if (nums[mid] < nums[right]) {
            right = mid;
        } else {
            right -= 1;
        }
    }
    return nums[left];
};