美文网首页
LeetCode 真题 153 寻找旋转排序数组中的最小值

LeetCode 真题 153 寻找旋转排序数组中的最小值

作者: 暖男Gatsby | 来源:发表于2020-02-18 09:25 被阅读0次

    假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。你可以假设数组中不存在重复元素。

    示例:输入:[3,4,5,1,2] 输出:1, [4,5,6,7,0,1,2]输出:0

    var findMin = function(nums) {

      let low = 0,

          high = nums.length - 1,

          ans = Infinity;

      while (low <= high) {

        let mid = low + Math.floor((high - low) / 2);

        if (nums[low] <= nums[mid]) {

          ans = Math.min(ans, nums[low]);

          low = mid + 1;

        } else {

          ans = Math.min(ans, nums[mid]);

          high = mid - 1;

        }

      }

      return ans;

    };

    /**

     * @param {number[]} nums

     * @return {number}

     * 通过二分法寻找有序数组段,找到后,

     * 将当前最小值与有序数组段的最小值进行比较,

     * 即可获取数组最小值,

     * 往往最简单直接的算法实现方式是最高效的。Infinity为正无穷大,-Infinity为无穷小。

     */

    相关文章

      网友评论

          本文标题:LeetCode 真题 153 寻找旋转排序数组中的最小值

          本文链接:https://www.haomeiwen.com/subject/ggwwfhtx.html