首页 > 解决方案 > JavaScript(在旋转排序数组中查找最小值)

问题描述

我有一个leetcode问题,我尝试使用自己的方法来解决它,但是我得到了一个错误,我不知道出了什么问题。

这是主题: 在此处输入图像描述

这是我尝试的解决方案:

var findMin = function(nums) {
    if (nums.length === 0) return undefined;
    var minEle = nums[0];
    if (nums.length === 1) {
        minEle = nums[0];
        return minEle;
    }
    var start = 0;
    var end = nums.length - 1;
    if (nums[end] > nums[start]) {
        end = Math.floor(end / 2);
    } else {
        start = Math.ceil(end / 2);
    }
    findMin(nums.slice(start, end + 1));
};

findMin([3,4,5,1,2]);

并且输出未定义。

我也试过这个:

var findMin = function(nums) {
    if (nums.length === 0) return undefined;
    var minEle = nums[0];
    if (nums.length === 1) {
        minEle = nums[0];
        return minEle;
    }
    var start = 0;
    var end = nums.length - 1;
    if (nums[end] > nums[start]) {
        end = Math.floor(end / 2);
    } else {
        start = Math.ceil(end / 2);
    }
    findMin(nums.slice(start, end + 1));
    return minEle;
};

findMin([3,4,5,1,2]);

输出为 3。

我试图调试它,我得到了这个:

在此处输入图像描述

我不明白为什么我的递归解决方案不正确。请注意,我尝试在考虑时间复杂度的情况下实施解决方案。

标签: javascript

解决方案


如果要查找数组中的最小值,只需使用Math.min.

例子:

console.log(Math.min.apply(null, [3,4,5,1,2]))


推荐阅读