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  }

結果:

貌似就連測試用例數量都不見了…不過成績並不是很快。