https://leetcode.com/problems/best-time-to-buy-and-sell-stock/description/
解法:
class Solution {
public int maxProfit(int[] prices) {
if(prices.length < 2){
return 0;
}
int maxprofit = 0;
int minprice = prices[0];
int temp;
for(int ele: prices){
temp = ele - minprice;
if(temp > maxprofit){
maxprofit = temp;
}
if(ele < minprice){
minprice = ele;
}
}
return maxprofit;
}
}
第一次做覺得理所當(dāng)然的方法第二次居然不敢確定這樣的做法是不是準(zhǔn)確:
有兩點值得指出的是:
- maxprofit可以將目前最好的結(jié)果保留下來
- 碰到當(dāng)前price低于minprice的時候敢直接將minprice替換為當(dāng)前price的理由為:
- 被替換掉的minprice的最優(yōu)解如果存在則已經(jīng)被存儲在maxprofit中
- 假如最適合被替換的minprice的賣出價在后面且當(dāng)前price低于minprice,則當(dāng)前價格做買入價會有更高的profit