【leetcode】122. 买卖股票的最佳时机 II

83 阅读1分钟

leetcode122.png

贪心算法
无限次买卖,计算出最大利润

这个算法的理解就是:
如果遇到一个递增的数组,那么我可以在同一天卖出,然后买进(可以看第二个测试用例),每天卖出(赚取前一天的利润),然后买进(为明天做准备)
如果遇到递减的部分了,那么就不买进了,因为受到了prices[i] > prices[i - 1]的制约,对于[7,1,5,3,2,6,4]测试用例而言,那么第二次买进的时机是2块的时候,而不是3块(找到谷底)

var maxProfit = function (prices) {
    let profit = 0
    for (let i = 1; i < prices.length; ++i) {
        if (prices[i] > prices[i - 1]) {
            profit += (prices[i] - prices[i - 1])
        }
    }
    return profit
};
  • 时间复杂度: O(n),其中 n 是价格数组的长度,我们只需要遍历一次数组。

  • 空间复杂度: O(1),只需要常数的额外空间。