力扣122.买卖股票的最佳时机 II(贪心算法)

37 阅读1分钟

给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。

在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。然而,你可以在 同一天 多次买卖该股票,但要确保你持有的股票不超过一股。

返回 你能获得的 最大 利润 。

image.png

这道题可以使用贪心的做法 题目关键点:可无限次交易,但最多同时持有一股

贪心思路:只赚取上升段的利润。遍历价格数组,如果明天价格高于今天(prices[i] < prices[i+1]),就今天买入明天卖出,累加这个差价。相当于将所有上涨的交易日都参与了。

示例 prices = [7,1,5,3,6,4]

  • 第1天→第2天:7→1(跌)→ 不参与
  • 第2天→第3天:1→5(涨)→ 买入卖出,利润+4
  • 第3天→第4天:5→3(跌)→ 不参与
  • 第4天→第5天:3→6(涨)→ 买入卖出,利润+3
  • 第5天→第6天:6→4(跌)→ 不参与
  • 总利润:4 + 3 = 7(最大)
    public int maxProfit(int[] prices) {
        int ans = 0;
        for(int i = 0; i < prices.length - 1; i++) {
            ans -= prices[i];
            if(prices[i] > prices[i + 1]) {
              ans += prices[i];
            } else {
                ans += prices[i + 1];
            }
        }
        return ans;
    }
}