题目大意是给出一串数组表示每一天的股价,假设每天只能做买或者卖一个动作,问可以做到的最大收益是多少。
想法是利用动态规划的思想,在本题中我们可以视作每天赚上涨的差价,求最大和子串。利用两个变量分别储存当前收益和迄今为止的最大收益。代码如下:
class Solution {
public int maxProfit(int[] prices) {
int maxCur = 0, maxSoFar = 0;
for(int i = 1; i < prices.length; i++) {
maxCur = Math.max(0, maxCur += prices[i] - prices[i-1]);
maxSoFar = Math.max(maxCur, maxSoFar);
}
return maxSoFar;
}
}