122. Best Time to Buy and Sell Stock II
这道题也比较简单。将股票的价格变化想象为一条曲线,当曲线上升时就可以获利。找到所有可以获利的区间,把利润加起来就可以了。
public class Solution {
public int maxProfit(int[] prices) {
if (prices == null || prices.length <= 1)
return 0;
int lastValue = prices[0]; // 上一个值
int maxProfit = 0;
int lowValue = prices[0]; // 目前的最小值
for (int i = 1; i < prices.length; i++) {
int value = prices[i];
// 如果开始下降了,就要加上前段的收益
if (value < lastValue) {
maxProfit += lastValue - lowValue; // 其实这里可能有些多余的操作,可能一直是在加0
lowValue = value;
}
lastValue = value;
}
// 注意这里,最后一个点有可能是上升的终点
if (lastValue > lowValue)
maxProfit += lastValue - lowValue;
return maxProfit;
}
}