[LeetCode]122. 买卖股票的最佳时机 II(java实现)
1. 题目
2. 读题(需要重点注意的东西)
思路:
核心:交易的分解
-
多段连续的交易等同于从该段起点到终点的一次交易:即若第一天买入,第三天卖出,第三天买入,第五天卖出,就
等效于第一天买入,第五天卖出
;(即两段黑色的曲线等效于一条红色的曲线)
-
一段交易可以分解为多段连续的小交易:若第一天买入,第五天卖出,就等效于
第一天买入,第二天卖出;第二天买入,第三天卖出;第三天买入,第四天卖出;第四天买入,第五天卖出
。(即一段黑色的曲线等效于多段红色的曲线)
因此,我们只需要算出每一段的利润,将所有为正的利润
加起来就是能获得的最大利润。
3. 解法
---------------------------------------------------解法---------------------------------------------------:
class Solution {
public int maxProfit(int[] prices) {
int res = 0;
for(int i = 1;i < prices.length;i++)
res += Math.max(0 , prices[i] - prices[i - 1]);
return res;
}
}
可能存在的问题: