解题步骤

  1. 新建一个变量用来统计总利润
  2. 遍历价格数组,如果当天价格比昨天高,就在昨天买入,今天卖出,否则就不交易
  3. 遍历结束后,返回所有利润之和

通过深度优先遍历实现

  • 时间复杂度:O (n)
  • 空间复杂度:O (1)

    1. function maxProfit(prices) {
    2. let profit = 0;
    3. for (let i = 0; i < prices.length; i++) {
    4. if (prices[i] > prices[i - 1]) {
    5. profit += prices[i] - prices[i - 1];
    6. }
    7. }
    8. return profit;
    9. }

在代码中存在一个 for 循环,所以时间复杂度是 O (n)。而空间复杂度是 O (1),因为没有临时存储会线性增长的变量。