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

【Day53】代碼隨想錄之動態(tài)規(guī)劃part10——買賣股票的最佳時機、買賣股票的最佳時機II

這篇具有很好參考價值的文章主要介紹了【Day53】代碼隨想錄之動態(tài)規(guī)劃part10——買賣股票的最佳時機、買賣股票的最佳時機II。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

昨天已經(jīng)把打家劫舍的問題解決了,最后一個題目涉及到樹形dp比較難(等到二刷的時候再重點看下),今天的任務(wù)是解決股票問題。

今日任務(wù):

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

題目一:買賣股票的最佳時機

Leetcode題目:【121.買賣股票的最佳時機】

【Day53】代碼隨想錄之動態(tài)規(guī)劃part10——買賣股票的最佳時機、買賣股票的最佳時機II,2-數(shù)據(jù)結(jié)構(gòu)與算法,動態(tài)規(guī)劃,算法
因為此題中買賣股票只能買賣一次。動態(tài)規(guī)劃是解決整套股票交易的固定方法。
按照動規(guī)五部曲:
(1)定義dp數(shù)組: i僅僅表示賣出的這種狀態(tài),不一定是當(dāng)天去買或者賣股票
dp[i][0]表示持有這支股票,所得到的最大現(xiàn)金;
dp[i][1]表示不持有這支股票,所得到的最大現(xiàn)金。
注意:dp[i][0]不一定是當(dāng)天有這支股票,有可能是0 ~ i-1天之間買入的;dp[i][1]也是同理。
最終要求的結(jié)果 max(dp[price.size()-1][0] , dp[price.size()-1][1])
(2)定義遞推公式:
總結(jié):持有就是可能是之前持有和現(xiàn)在持有;不持有可能是之前賣了也可能是現(xiàn)在賣了。
dp[i][0]:之前持有:dp[i-1][0], 現(xiàn)在持有:-price[i](買的話肯定是第一次買),所以dp[i][0] = max(dp[i-1][0], -price[i]);
dp[i][1]:之前賣了:dp[i-1][1],現(xiàn)在賣了:dp[i-1][0] + price[i],所以dp[i][1] = max(dp[i-1][1], dp[i-1][0] + price[i]);
(3)初始化:
dp[0][0] = -price[0];dp[0][1] = 0;
(4)遍歷順序:
從左到右即可。
(5)打印dp數(shù)組即可:
將dp數(shù)組打印出來就可以了。

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        vector<vector<int>> dp(prices.size(), vector<int>(2));
        dp[0][0] = -prices[0];
        dp[0][1] = 0;
        for(int i = 1; i<prices.size(); i++){
            dp[i][0] = max(dp[i-1][0], -prices[i]);
            dp[i][1] = max(dp[i-1][1], dp[i-1][0] + prices[i]);
        }
        return max(dp[prices.size()-1][0], dp[prices.size()-1][1]);
    }
};

題目二:買賣股票的最佳時機II

Leetcode題目:【122.買賣股票的最佳時機II】

【Day53】代碼隨想錄之動態(tài)規(guī)劃part10——買賣股票的最佳時機、買賣股票的最佳時機II,2-數(shù)據(jù)結(jié)構(gòu)與算法,動態(tài)規(guī)劃,算法
這個題與上面的不同的是,可以一支股票可以買賣多次,還是用動態(tài)規(guī)劃解決股票流轉(zhuǎn)的問題。

再解法上與上一題的區(qū)別是持有股票的遞推公式不同。為了對股票投資的最佳時機問題有更清楚的認(rèn)識,下面自己按照動規(guī)五部曲進行分析:

(1)確定dp數(shù)組的含義,定義二維的:
dp[i][0]表示持有這支股票,能收獲的最大金額數(shù);
dp[i][1]表示不持有這支股票,能收回的最大金額數(shù)。
(2)確定遞推公式:
總結(jié):持有這支股票:之前持有或者現(xiàn)在持有;不持有這支股票:之前賣了,或者現(xiàn)在賣了;
dp[i][0] = max(dp[i-1][0], dp[i][1] - prices[i]);
dp[i][1] = max(dp[i-1][1], dp[i-1][0] + prices[i]);
(3)確定初始化條件:
dp[0][0] = -prices[0];
dp[0][1] = 0;
(4)遍歷順序:
從左到右即可;
(5)打印dp數(shù)組。文章來源地址http://www.zghlxwxcb.cn/news/detail-840210.html

class Solution {
public:
    int sum = 0;
    int maxProfit(vector<int>& prices) {
       vector<vector<int>> dp(prices.size(), vector<int>(2));
       dp[0][0] = -prices[0];
       dp[0][1] = 0;
       for(int i = 1; i<prices.size(); i++){
           dp[i][0] = max(dp[i-1][0], dp[i-1][1] - prices[i]);
           dp[i][1] = max(dp[i-1][1], dp[i-1][0] + prices[i]);
       }
       return max(dp[prices.size()-1][0], dp[prices.size()-1][1]);
    }
};

到了這里,關(guān)于【Day53】代碼隨想錄之動態(tài)規(guī)劃part10——買賣股票的最佳時機、買賣股票的最佳時機II的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 代碼隨想錄算法訓(xùn)練51 | 動態(tài)規(guī)劃part12

    本題加了一個冷凍期,狀態(tài)就多了,有點難度,大家要把各個狀態(tài)分清,思路才能清晰? 視頻講解: 動態(tài)規(guī)劃來決定最佳時機,這次有冷凍期!| LeetCode:309.買賣股票的最佳時機含冷凍期_嗶哩嗶哩_bilibili 代碼隨想錄 相對122.買賣股票的最佳時機II?,本題只需要在計算賣出操

    2024年01月18日
    瀏覽(51)
  • 代碼隨想錄第53天|● 1143.最長公共子序列 ● 1035.不相交的線 ● 53. 最大子序和 動態(tài)規(guī)劃

    代碼隨想錄第53天|● 1143.最長公共子序列 ● 1035.不相交的線 ● 53. 最大子序和 動態(tài)規(guī)劃

    dp[i][j]:長度為[0, i - 1]的字符串text1與長度為[0, j - 1]的字符串text2的最長公共子序列為dp[i][j] 通過pre記錄前一個dp[j-1] 循環(huán)中記錄cur為dp[i],循環(huán)結(jié)束后再更新pre=cur。 和最長公共子序列相同 注意pre和cur放置的位置 dp[i]:包括下標(biāo)i(以nums[i]為結(jié)尾)的最大連續(xù)子序列和為dp[i

    2024年03月08日
    瀏覽(26)
  • 二刷代碼隨想錄——動態(tài)規(guī)劃day40

    一個本碩雙非的小菜雞,備戰(zhàn)24年秋招,計劃二刷完卡子哥的刷題計劃,加油! 二刷決定精刷了,于是參加了卡子哥的刷題班,訓(xùn)練營為期60天,我一定能堅持下去,迎來兩個月后的脫變的,加油! 推薦一手卡子哥的刷題網(wǎng)站,感謝卡子哥。代碼隨想錄 終于來到了守關(guān)boss。

    2024年03月11日
    瀏覽(85)
  • 【代碼隨想錄】Day 49 動態(tài)規(guī)劃10 (買賣股票Ⅰ、Ⅱ)

    【代碼隨想錄】Day 49 動態(tài)規(guī)劃10 (買賣股票Ⅰ、Ⅱ)

    https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/ dp[i]表示在第i天時,賣/不賣股票能獲得的最大利潤: 1、賣股票:dp[i] = prices[i] -minPrice(i天以前的最低價格) 2、不賣股票:dp[i] = dp[i-1](因為不賣股票,所以狀態(tài)和前一天保持一致) ∴dp[i] = max(dp[i-1], prices[i] - minPrice); https

    2024年02月09日
    瀏覽(18)
  • Day39 代碼隨想錄(1刷) 動態(tài)規(guī)劃 0-1背包

    題目描述 小明是一位科學(xué)家,他需要參加一場重要的國際科學(xué)大會,以展示自己的最新研究成果。他需要帶一些研究材料,但是他的行李箱空間有限。這些研究材料包括實驗設(shè)備、文獻資料和實驗樣本等等,它們各自占據(jù)不同的空間,并且具有不同的價值。? 小明的行李空間

    2024年04月23日
    瀏覽(33)
  • 【Day52】代碼隨想錄之動態(tài)規(guī)劃_打家劫舍

    動態(tài)規(guī)劃理論基礎(chǔ) 動規(guī)五部曲: 確定dp數(shù)組 下標(biāo)及dp[i] 的含義。 遞推公式:比如斐波那契數(shù)列 dp[i] = dp[i-1] + dp[i-2]。 初始化dp數(shù)組。 確定遍歷順序:從前到后or其他。 打印。 出現(xiàn)結(jié)果不正確: 打印dp日志和自己想的一樣:遞推公式、初始化或者遍歷順序出錯。 打印dp日志和

    2024年02月22日
    瀏覽(28)
  • 【Day42】代碼隨想錄之動態(tài)規(guī)劃0-1背包_416. 分割等和子集

    【Day42】代碼隨想錄之動態(tài)規(guī)劃0-1背包_416. 分割等和子集

    動態(tài)規(guī)劃理論基礎(chǔ) 動規(guī)五部曲: 確定dp數(shù)組 下標(biāo)及dp[i] 的含義。 遞推公式:比如斐波那契數(shù)列 dp[i] = dp[i-1] + dp[i-2]。 初始化dp數(shù)組。 確定遍歷順序:從前到后or其他。 推導(dǎo)dp數(shù)組。 出現(xiàn)結(jié)果不正確: 打印dp日志和自己想的一樣:遞推公式、初始化或者遍歷順序出錯。 打印

    2024年02月20日
    瀏覽(97)
  • 我在代碼隨想錄|寫代碼Day33 | 動態(tài)規(guī)劃| 路徑問題| 62.不同路徑,63. 不同路徑 II,343. 整數(shù)拆分

    我在代碼隨想錄|寫代碼Day33 | 動態(tài)規(guī)劃| 路徑問題| 62.不同路徑,63. 不同路徑 II,343. 整數(shù)拆分

    ??博客介紹`: 27dCnc ??系列專欄: 數(shù)據(jù)結(jié)構(gòu)與算法 算法入門 C++項目 ?? 當(dāng)前專欄: 算法入門 專題 : 數(shù)據(jù)結(jié)構(gòu)幫助小白快速入門算法 ???????????????????????? ☆*: .?. o(≧▽≦)o .?.:*☆ ??感謝大家點贊??收藏?評論?? 今日學(xué)習(xí)打卡 代碼隨想錄 - 動態(tài)規(guī)劃

    2024年03月11日
    瀏覽(97)
  • 代碼隨想錄 Day35 動態(tài)規(guī)劃04 01背包問題和完全背包問題 LeetCode T416 分割等和子集

    代碼隨想錄 Day35 動態(tài)規(guī)劃04 01背包問題和完全背包問題 LeetCode T416 分割等和子集

    說到背包問題大家都會想到使用動規(guī)的方式來求解,那么為什么用動規(guī)呢, dp數(shù)組代表什么呢 ? 初始化是什么 , 遍歷方式又是什么 ,這篇文章筆者將詳細講解背包問題的經(jīng)典例題0-1背包問題和完全背包問題的解題方式,希望能幫助到大家 有人一提到背包問題就只會使用動態(tài)規(guī)劃來

    2024年02月06日
    瀏覽(124)
  • 【Day43】代碼隨想錄之動態(tài)規(guī)劃0-1背包_1049. 最后一塊石頭的重量 II_494. 目標(biāo)和_ 474.一和零

    動態(tài)規(guī)劃理論基礎(chǔ) 動規(guī)五部曲: 確定dp數(shù)組 下標(biāo)及dp[i] 的含義。 遞推公式:比如斐波那契數(shù)列 dp[i] = dp[i-1] + dp[i-2]。 初始化dp數(shù)組。 確定遍歷順序:從前到后or其他。 打印。 出現(xiàn)結(jié)果不正確: 打印dp日志和自己想的一樣:遞推公式、初始化或者遍歷順序出錯。 打印dp日志和

    2024年02月22日
    瀏覽(25)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包