LeetCode – 買賣股票的最佳時機
- 2019 年 10 月 4 日
- 筆記
LeetCode第122題,難度簡單。主要考察的就是對於貪心演算法的
原題地址:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii/
題目描述:
給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。設計一個演算法來計算你所能獲取的最大利潤。你可以儘可能地完成更多的交易(多次買賣一支股票)。
注意:你不能同時參與多筆交易(你必須在再次購買前出售掉之前的股票)。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii
著作權歸領扣網路所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
解題思路:
基於題目的條件,其實拋開股票來看,需要計算的就是未來的數值比當前更高的時候,兩者之間能相差多大。在一個數組裡面,求分段的小->大的過程中的差值。
所以解法就是很簡單的遍歷整個數組,判斷下一個元素是否大於當前元素,如果大於了,那就直接加上差值,否則跳過不管。這樣的場景其實就是每天都進行買賣,只要不虧,就肯定買。
中文官網題解:
https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii/solution/
個人題解:
func maxProfit(prices []int) int { max := 0 for i := 0; i < len(prices)-1; i++ { if prices[i+1] > prices[i] { max += prices[i+1] - prices[i] } } return max }
結果:
貌似就連測試用例數量都不見了…不過成績並不是很快。
