[leetcode]解題報告121. Best Time to Buy and Sell Stock

這題,似曾相識。。。記得今年春招的時候,在今日頭條網絡筆試安卓的時候出現過。。。。

個人想法:—面試算法裏也講過這種問題——最大子列和問題。。。

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]。果然是特別簡單。
希望傻這一次就夠了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章