解法一:最终结果=最大单价-最小单价。倒叙,记录并更新最大单价,记录并更新目前能卖出的最大价格=max(之前能卖出的最大价格,最大单价-目前单价)。同理,可以正序记录更新最小单价。
class Solution {
public int maxProfit(int[] prices) {
int n = prices.length;
if(n==0){
return 0;
}
int max_profit = 0; // 记录目前的最大利润
int max_price = prices[n-1]; // 记录交易的最大价格
for(int i=n-2; i>=0; i--){
max_price = Math.max(max_price, prices[i]);
// 当天的最大利润=最大单价-当天价格
max_profit = Math.max(max_profit, max_price-prices[i]);
}
return max_profit;
}
}