思路
- 第一动态规划...画格子,当到第n天时,n-1天的利润最大值,然后判断第n天是否会有利润提升,如果有的话就更新利润最大值
- 因为觉得动态规划有点麻烦,更简单类似于滑动窗口的解法,最小利润为0,窗口内的股价最低值为min,右窗口不断遍历更新最大利润值以及窗口内股价最低值,这样遍历到最后就可以取得整个数据间的利润最大值了
class Solution {
public int maxProfit(int[] prices) {
if (prices.length <= 1) return 0;
int profit = 0; // 最大利润
int min = prices[0]; // 当前价格
for (int i : prices) {
// 更新窗口中的股价最低点
min = Math.min(min,i);
// 更新利润最大值
if ((i - min) > profit) profit = i-min;
}
return profit;
}
}
Q.E.D.