给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。
在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。然而,你可以在 同一天 多次买卖该股票,但要确保你持有的股票不超过一股。
返回 你能获得的 最大 利润 。
这道题可以使用贪心的做法 题目关键点:可无限次交易,但最多同时持有一股
贪心思路:只赚取上升段的利润。遍历价格数组,如果明天价格高于今天(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;
}
}