ETH官方钱包

切換
舊版
前往
大廳
主題

LeetCode - 121. Best Time to Buy and Sell Stock 解題心得

Not In My Back Yard | 2020-08-22 00:02:00 | 巴幣 0 | 人氣 247

題目連結:


題目意譯:
假設你有一個陣列,其第 i 個元素代表著某個股票第 i 天的價格。

如果你只被允許完成最多一次交易(即買入以及賣出一股股票),設計一個演算法可以找到最大獲利。

注意,你無法在買入股票前賣出股票。



範例測資:
範例 1:
輸入: [7,1,5,3,6,4]
輸出: 5
解釋: 在第 2 天(價格為 1),然後賣第 5 天(價格為 6),利潤 = 6 - 1 = 5 。
    並非 7 - 1 = 6 ,因為賣出的價格必須比買入價格還大(才能稱為利潤)。

範例 2:
輸入: [7,6,4,3,1]
輸出: 0
解釋: 在此例中,沒有任何交易完成,最大利潤 = 0 。


解題思維:
類似於這題,只是現在我們要找的 (i, j) 需要滿足 i > j (因為是第 j 個數字減去第 i 個數字)。

一個方法是,可以反著掃陣列然後用上面那題更新目前最大值的方式去找到所求;
另一個則是,將更新最大值變為更新最小值,然後依照正常順序掃過陣列即可。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

追蹤 創作集

作者相關創作

更多創作