121. Best Time to Buy and Sell Stock
class Solution {
public int maxProfit(int[] prices) {
/*
考虑每次如何获取最大收益?
第i天的最大收益只需要知道前i天的最低点就可以算出来了。
而第i天以前(包括第i天)的最低点和i-1天的最低点有关:
dp[i] = min(d[i-1],prices[i])
其中dp[0]=prices[0],然后动态计算之后的就可以了。
得到了前i天的最低点以后,只需要维护一个max用来保存最大收益就可以了*/
int minprice=Integer.MAX_VALUE;
int maxprofit=0;
for (int i=0; i<prices.length; i++) {
//consider everyday
//update if today is the minprice of the period
//update if today selling will get you maxprofit
if (prices[i] < minprice) {
minprice = prices[i];
} else if (prices[i] - minprice > maxprofit) {
maxprofit = prices[i] - minprice;
}
}
return maxprofit;
}
}