题目描述
题目分析
- 根据题意,为了获取最大利润,我们需要在上涨时买入,下跌时卖出
- 如果是连续的上涨,上述规则也可满足最大利润,如下图中,
D = A + B + C
解法分析
- 遍历,前后比较,相当于有了预知未来的能力,能知道第二天股市情况
- 如果第二天比第一天小,那就是要下跌了,不要买入,静静观望
- 如果第二天比第一天大,那就是要上涨了,可以买入,并累计盈利
代码
class Solution {
public int maxProfit(int[] prices) {
int res = 0;
int len = prices.length;
// 对于每一个元素,如果后一个比前一个大,就可以买入并在第二天卖出
for (int i = 0; i < len - 1; i++) {
int diff = prices[i + 1] - prices[i];
if (diff > 0) {
res += diff;
}
}
return res;
}
}