此题应该分清楚这两种情况:在一段时间内如果价格一路上升,则最早买、最晚卖时利润是最高的;如果中途有价格下跌而产生了低谷与高峰的情况,则在低谷买、高峰卖时利润最高。
class Solution {
public int maxProfit(int[] prices) {
int maxProfit = 0;
int lo = 0;
int hi = 0;
for(int i = 0; i < prices.length; i++) {
while(i < prices.length-1 && prices[i] > prices[i+1])
i++;
lo = i;
while(i < prices.length-1 && prices[i] < prices[i+1])
i++;
hi = i;
maxProfit += prices[hi] - prices[lo];
}
return maxProfit;
}
}