【日常学习-算法:买卖股票的最佳时机】

18 阅读1分钟
给定一个数组 `prices` ,它的第 `i` 个元素 `prices[i]` 表示一支给定股票第 `i` 天的价格。

你只能选择 **某一天** 买入这只股票,并选择在 **未来的某一个不同的日子** 卖出该股票。设计一个算法来计算你所能获取的最大利润。

返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 `0` 。

写了一个版本的解决方案,提交提示“超出时间限制”,直接看答案吧

/**
 * @param {number[]} prices
 * @return {number}
 */
var maxProfit = function(prices) {
    let minDay = Infinity;
    let maxProfit = 0;

    for(let i = 0; i < prices.length; i++){
        let current = prices[i];
        minDay = Math.min(minDay, current);
        maxProfit = Math.max(maxProfit, current - minDay);
    }

    return maxProfit;
};

维护了一个最大值,和当前已知的最小值,一次循环解决问题;(买个锤锤的股票!!)