国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

day49-動態(tài)規(guī)劃10-買賣股票問題

這篇具有很好參考價值的文章主要介紹了day49-動態(tài)規(guī)劃10-買賣股票問題。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

121. 買賣股票的最佳時機

方法1:貪心思路

但是利用其他思路只能解決具體場景下的問題,并不能解決通用的一些問題。

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        buy = 0
        maxPrice = -float("inf")
        for i in range(1,len(prices)):
            if prices[i] - prices[buy] <= 0:
                # 以更低的價格買入
                buy = i
                continue
            elif prices[i] - prices[buy] > maxPrice:
                maxPrice = prices[i] - prices[buy]
        return maxPrice if maxPrice >=0 else 0

方法2:動態(tài)規(guī)劃

  1. dp[i][0] :表示第i天持有該股票的最大收益,dp[i][1] 表示第i天不持有該股票的最大收益。需要注意的是第i天的情況是什么樣,并不是表示第i天就賣出了這只股票,而是表示
  2. 遞推公式: dp[i][0]
    第一種是保持i-1天的狀態(tài)不變,dp[i-1][0]
    第二種是買入這支股票手里的剩余金額 -prices[i]
    前一天保持不持有的狀態(tài),或者今天賣出了股票,這是后一天情況依賴于前面情況的關系。
    dp[i][1] = max(dp[i-1][1], dp[i-1][0]+prices[i])
  3. dp[0][0]=-prices 和 dp[1][0]=0
  4. 遍歷方式: 后面的狀態(tài)依賴于前面的狀態(tài),所以需要遍歷每一天的數(shù)值。
  5. 打印dp數(shù)組
class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        N = len(prices)
        dp = [[0,0] for _ in range(N)]
        dp[0][0] = -prices[0] 
        dp[0][1] = 0
        for i in range(1,N):
            dp[i][0] = max(-prices[i],dp[i-1][0])
            dp[i][1] = max(dp[i-1][1],dp[i-1][0] + prices[i])
        return max(dp[N-1][0],dp[N-1][1])   

122.買賣股票的最佳時機II

方法1:貪心算法

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        profit = 0
        for i in range(len(prices)-1):
            if prices[i+1]-prices[i]>0:
                profit += prices[i+1]-prices[i]
        return profit

方法2:動態(tài)規(guī)劃

區(qū)別: 股票可以買賣多次,這個時候的最大利潤是多少。僅僅在遞推公式和買賣股票I有所不同,其他代碼均相同。文章來源地址http://www.zghlxwxcb.cn/news/detail-481424.html

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        N = len(prices)
        dp = [[0,0] for _ in range(N)]
        dp[0][0] = -prices[0] 
        dp[0][1] = 0
        for i in range(1,N):
            # 0表示不持有該股票;1表示持有該股票
            # 如果不持有該股票,一種情況是買入,另一種情況是繼續(xù)保持不持有的狀態(tài)
            # 如果當前是持有該股票的狀態(tài),一種情況是賣出,另一種情況是繼續(xù)保持之前的持有狀態(tài),不賣出
            dp[i][0] = max(dp[i-1][1]-prices[i],dp[i-1][0])
            dp[i][1] = max(dp[i-1][1],dp[i-1][0] + prices[i])
        return max(dp[N-1][0],dp[N-1][1]) 

到了這里,關于day49-動態(tài)規(guī)劃10-買賣股票問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • DAY55:動態(tài)規(guī)劃(買賣股票的最佳時機3)

    DAY55:動態(tài)規(guī)劃(買賣股票的最佳時機3)

    這道題比上面狀態(tài)更多,是因為賣出股票后,你無法在第二天買入股票 (即冷凍期為1天)。 狀態(tài) 狀態(tài)一:持有股票狀態(tài)(今天買入股票,或者是之前就買入了股票然后沒有操作,一直持有) 不持有股票狀態(tài),這里就有兩種賣出股票狀態(tài) 狀態(tài)二:保持賣出股票的狀態(tài)(兩天前

    2024年02月22日
    瀏覽(28)
  • 研習代碼 day42 | 動態(tài)規(guī)劃——買賣股票的最佳時機 I II

    ????????1.1 題目 ????????給定一個數(shù)組? prices ?,它的第? i ?個元素? prices[i] ?表示一支給定股票第? i ?天的價格。 ????????你只能選擇? 某一天 ?買入這只股票,并選擇在? 未來的某一個不同的日子 ?賣出該股票。設計一個算法來計算你所能獲取的最大利潤。

    2024年02月03日
    瀏覽(19)
  • 【動態(tài)規(guī)劃】簡單多狀態(tài)dp問題(2)買賣股票問題

    【動態(tài)規(guī)劃】簡單多狀態(tài)dp問題(2)買賣股票問題

    買賣股票問題 傳送門:力扣309. 最佳買賣股票時機含冷凍期 題目: 1.1 題目解析 越難的dp問題,看示例只能起到了解題目的效果,一般推不出啥普遍的規(guī)律,所以接下來就是我們的算法原理,通過動歸的思想去理解,才會豁然開朗! 1.2 算法原理 1.2.1 狀態(tài)表示 我們需要通過經(jīng)

    2024年02月12日
    瀏覽(40)
  • 算法訓練day49|動態(tài)規(guī)劃part10

    貪心 因為股票就買賣一次,那么貪心的想法很自然就是取最左最小值,取最右最大值,那么得到的差值就是最大利潤。 本次重點學習動態(tài)規(guī)劃方法 1. dp數(shù)組(dp table)以及下標的含義 dp[i][0] 表示第i天持有股票所得最多現(xiàn)金,一開始現(xiàn)金為負數(shù),所以第一天就持有股票的話,

    2024年02月03日
    瀏覽(50)
  • [Leetcode] 買賣股票合集(動態(tài)規(guī)劃)

    寫完這套題,再搞一臺時光機,財務自由不是夢(Doge) ================================== 相關題目鏈接 121 買賣股票的最佳時機 122 買賣股票的最佳時機 II 123 買賣股票的最佳時機 III 188 買賣股票的最佳時機 IV 309 買賣股票的最佳時機含冷凍期 714 買賣股票的最佳時機含手續(xù)費 給定一

    2023年04月16日
    瀏覽(28)
  • 算法[動態(tài)規(guī)劃]---買賣股票最佳時機

    算法[動態(tài)規(guī)劃]---買賣股票最佳時機

    1、題目: 給你一個整數(shù)數(shù)組 prices,其中 prices[i] 表示某支股票第 i 天的價格。 在每一天,你可以決定是否購買和/或出售股票。你在任何時候最多只能持一股股票。你也可以先購買,然后在同一天出售。 返回你能獲得的最大利潤 。 2、 分析特點: 題目要求:在任何時候最多

    2024年02月09日
    瀏覽(23)
  • 動態(tài)規(guī)劃Day12(股票問題終結(jié),有點疑惑)

    目錄 309.最佳買賣股票時機含冷凍期 看到題目的第一想法? ? ? ? ? ? ? ? 看到代碼隨想錄之后的想法 自己實現(xiàn)過程中遇到的困難 714.買賣股票的最佳時機含手續(xù)費 看到題目的第一想法? ? ? ? ? ? ? ? 看到代碼隨想錄之后的想法 自己實現(xiàn)過程中遇到的困難 力扣題目鏈接

    2024年01月23日
    瀏覽(14)
  • 動態(tài)規(guī)劃--買賣股票含冷凍期309

    動態(tài)規(guī)劃--買賣股票含冷凍期309

    ? ? ? ? 這道題很明顯下一天的利潤需要由上一天的狀態(tài)推導出來,所以這是很明顯的動態(tài)規(guī)劃問題 ????????普通的股票問題有兩種狀態(tài):持有股票的利潤,不持有股票的利潤,但這道題有一個冷凍期,使得這道題有4種狀態(tài): ? ? ? ? 1、 持有股票的利潤 ;? ? ? ? ?

    2024年04月28日
    瀏覽(24)
  • 動態(tài)規(guī)劃——買賣股票的最佳時機系列題

    動態(tài)規(guī)劃——買賣股票的最佳時機系列題

    買賣股票有一系列題目 以下是我找出它們之間的區(qū)別: 第一題,只能買一次,從最低價入手,最高價賣出 第二題,可以買無數(shù)次,但買了之后,必須賣出之后,再來重新買入,再賣出。 第三題,只能買兩次,但買了之后,必須賣出之后,再來重新買入,再賣出。 第四題,

    2024年01月17日
    瀏覽(20)
  • 【LeetCode股票買賣系列:309. 最佳買賣股票時機含冷凍期 | 暴力遞歸=>記憶化搜索=>動態(tài)規(guī)劃】

    【LeetCode股票買賣系列:309. 最佳買賣股票時機含冷凍期 | 暴力遞歸=>記憶化搜索=>動態(tài)規(guī)劃】

    ?? 算法題 ?? ?? 算法刷題專欄 | 面試必備算法 | 面試高頻算法 ?? ?? 越難的東西,越要努力堅持,因為它具有很高的價值,算法就是這樣? ?? 作者簡介:碩風和煒,CSDN-Java領域新星創(chuàng)作者??,保研|國家獎學金|高中學習JAVA|大學完善JAVA開發(fā)技術(shù)棧|面試刷題|面經(jīng)八股文

    2024年02月02日
    瀏覽(53)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包