当前天数的最大利润为 Math.max(前一天的最大利润,这一天的价钱减去前几天最小的价钱)
从第二天开始算起,也就是 i = 1;
/** 当前天数的最大利润为 Math.max(前一天的最大利润,这一天的价钱减去前几天最小的价钱)*/
public int maxProfit(int[] prices) {
if (prices.length == 0) return 0;
/** 初始状态: 第一天的最大利润为 0 */
int fn = 0;
int min = prices[0];
/** 转移方程:
* fn+1 = Math.max(fn,prices[n] - min)
* fn = Math.max(fn-1,prices[n-1] - min)*/
for (int i = 1; i <= prices.length-1; i++){
min = Math.min(min,prices[i]);//计算这几天的价格最小值,初始最小值为第一天,也就是min = prices[0];
fn = Math.max(fn,prices[i] - min);
}
return fn;
}