Leetcode練習(Python):數組類:第121題:給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。 如果你最多只允許完成一筆交易(即買入和賣出一支股票一次),設計一個算法來計算你所能獲取的最大利潤。 注意:你不能在買入股票前賣出股票。


題目:給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。  如果你最多只允許完成一筆交易(即買入和賣出一支股票一次),設計一個算法來計算你所能獲取的最大利潤。  注意:你不能在買入股票前賣出股票。
思路:動態規划(最佳),還可以用暴力
在某教育科技公司面試時遇到過。
程序1:動態規划
class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        length = len(prices)
        if length <= 1:
            return 0
        buy = prices[0]
        auxiliary = [0] * length
        for index in range(1, length):
            auxiliary[index] = max(auxiliary[index - 1], prices[index] - buy)
            buy = min(buy, prices[index])
        result = max(auxiliary)
        return result
程序2:暴力
class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        length = len(prices)
        if length <= 1:
            return 0
        if length == 2:
            if prices[0] >= prices[1]:
                return 0
            else:
                return prices[1] - prices[0]
        #Find the buy point
        index1 = 1
        auxiliary_buy = []
        auxiliary_buy.append(prices[1])
        auxiliary_sell = []
        auxiliary_sell.append(prices[length - 1])
        while index1 < length:
            if prices[index1] < prices[index1 - 1]:
                auxiliary_buy.append(prices[index1])
                buy = min(auxiliary_buy)
                #Find the sell point
                auxiliary_sell.append(max(prices[index1 : ]))
                sell = max(auxiliary_sell)
                result = sell - buy 
                if result <= 0:
                    return 0
                    break
            index1 += 1
        return result
            


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



猜您在找 Leetcode練習(Python):數組類:第123題:給定一個數組,它的第 i 個元素是一支給定的股票在第 i 天的價格。 設計一個算法來計算你所能獲取的最大利潤。你最多可以完成 兩筆 交易。 注意: 你不能同時參與多筆交易(你必須在再次購買前出售掉之前的股票)。 Leetcode練習(Python):數組類:第122題:給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。 設計一個算法來計算你所能獲取的最大利潤。你可以盡可能地完成更多的交易(多次買賣一支股票)。 注意:你不能同時參與多筆交易(你必須在再次購買前出售掉之前的股票)。 風口之下,豬都能飛。當今中國股市牛市,真可謂“錯過等七年”。 給你一個回顧歷史的機會,已知一支股票連續n天的價格走勢,以長度為n的整數數組表示,數組中第i個元素(prices[i])代表該股票第i天的股價。 假設你一開始沒有股票,但有至多兩次買入1股而后賣出1股的機會,並且買入前一定要先保證手上沒有股票。若兩次交易機會都放棄,收益為0。 設計算法,計算你能獲得的最大收益。 輸入數值范圍:2<=n< 1.股票交易委托:買入、賣出操作 獲取股票數據【實時更新股票數據、創建你的股票數據】、計算交易指標【買入、賣出信號、計算持倉收益、計算累計收益率】 風口之下,豬都能飛。當今中國股市牛市,真可謂“錯過等七年”。 給你一個回顧歷史的機會,已知一支股票連續n天的價格走勢,以長度為n的整數數組表示, Leetcode練習(Python):第448題:找到所有數組中消失的數字:給定一個范圍在 1 ≤ a[i] ≤ n ( n = 數組大小 ) 的 整型數組,數組中的元素一些出現了兩次,另一些只出現一次。 Leetcode練習(Python):第485題:最大連續1的個數:給定一個二進制數組, 計算其中最大連續1的個數。 Leetcode練習(Python):哈希表類:第136題:給定一個非空整數數組,除了某個元素只出現一次以外,其余每個元素均出現兩次。找出那個只出現了一次的元素。 Leetcode練習(Python):數組類:第189題:給定一個數組,將數組中的元素向右移動 k 個位置,其中 k 是非負數。
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM