這題,似曾相識。。。記得今年春招的時候,在今日頭條網絡筆試安卓的時候出現過。。。。
個人想法:—面試算法裏也講過這種問題——最大子列和問題。。。
1.選擇數據結構
既然是best time,肯定找一個低價、時間買入,高價、時間賣出。我覺得適合map存儲。
2.嗯。。。果斷gg啊,本來就想複雜了。
別人的想法
public class Solution {
public int maxProfit(int[] prices) {
int maxCur =0,maxSoFar =0;
for(int i=1;i<prices.length;i++){
maxCur=Math.max(0,maxCur += prices[i]-prices[i-1]);
maxSoFar=Math.max(maxCur,maxSoFar);
}
return maxCur;
}
}
果然很簡單。。。一個max,保存當前一段數組的和,如果這個和比之前的和大,那麼他就是最後答案。。。
總結:
果然很簡單。。。當時很傻沒想出來,現在很傻也沒想出來。。。果然需要多做一做
爲什麼不需要map?因爲輸入的數組已經蘊含時間順序,所以map個雞毛
下面的代碼,核心在maxCur += prices[i]-prices[i-1]。果然是特別簡單。
希望傻這一次就夠了