121 Best Time to Buy and Sell Stock
问题描述
思路
两个值记录,一个值记录以i为结束位置为止最大盈利,另一个值记录到现在的最大盈利(可能不是以i为结束位置)。
Java实现
class Solution {
public int maxProfit(int[] prices) {
int maxCurrent=0;
int maxSoFar=0;
for(int i = 1; i<prices.length ;i++ ){
maxCurrent=Math.max(0,maxCurrent+=prices[i]-prices[i-1]);//以i为结束位置为止最大盈利
maxSoFar=Math.max(maxCurrent,maxSoFar);//录到现在的最大盈利(可能不是以i为结束位置)
}
return maxSoFar;
}
}
参考
122 Best Time to Buy and Sell Stock
问题描述
思路
三个值记录,一个值记录相邻元素盈利的值,一个值记录以i为结束位置为止累计盈利,另一个值记录到现在的最大盈利(可能不是以i为结束位置)。
Java实现
class Solution {
public int maxProfit(int[] prices) {
int maxCurrent=0;
int maxSoFar=0;
int increace=0;
for(int i = 1; i<prices.length ;i++ ){
increace=Math.max(0,prices[i]-prices[i-1]);// 与121题不同的地方 记录相邻元素盈利的值(亏损记为0)
maxCurrent=Math.max(0,maxCurrent+=increace);//以i为结束位置为止累计盈利
maxSoFar=Math.max(maxCurrent,maxSoFar);//录到现在的最大盈利(可能不是以i为结束位置)
}
return maxSoFar;
}
}