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

【每日刷題】動態(tài)規(guī)劃-代碼隨想錄動規(guī)-8、9

這篇具有很好參考價值的文章主要介紹了【每日刷題】動態(tài)規(guī)劃-代碼隨想錄動規(guī)-8、9。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

1. 代碼隨想錄-動規(guī)8.LC343整數(shù)拆分

題目鏈接
dp數(shù)組含義:dp[i]表示拆分i的最大乘積
遞推公式:dp[i]= max(j*(i-j), j*dp[i-j], dp[i])
解釋:從1遍歷j,有兩種渠道得到dp[i].
一個是j * (i - j) 直接相乘。
一個是j * dp[i - j],相當(dāng)于是拆分(i - j)
為何不拆分j:j是從1開始遍歷,拆分j的情況,在遍歷j的過程中其實(shí)都計算過了
比如:dp[7]拆分3和dp[4],為什么不拆分3?因?yàn)閐p[7]拆成1和dp[6]的時候就已經(jīng)拆3了(1+2+4)
初始化:dp[0] = 0; dp[1] = 0; dp[2] = 1;
遍歷終止條件
拆分一個數(shù)n 使之乘積最大,那么一定是拆分成m個近似相同的子數(shù)相乘才是最大的。
例如 6 拆成 3 * 3, 10 拆成 3 * 3 * 4。 100的話 也是拆成m個近似數(shù)組的子數(shù)相乘才是最大的,也就是:最差也應(yīng)該是拆成兩個相同的 可能是最大值。
那么 j 遍歷,只需要遍歷到 n/2 就可以,后面就沒有必要遍歷了,一定不是最大值。
比如10的拆分最大值最差也是拆成5和5,再拆的細(xì)、貼合就是334,但如果從6往后遍歷的話,只會越來越加大每個子數(shù)之間的差距,不會達(dá)到拆成5和5的結(jié)果。所以沒必要遍歷n/2之后的數(shù)了。

代碼:

class Solution {
    public int integerBreak(int n) {
        int[] dp = new int[n+1];
        dp[0] = 0;
        dp[1] = 0;
        dp[2] = 1;
        for (int i = 3; i < dp.length; i++){
            for (int j = 1; j <= i/2; j++){
                int temp = Math.max(j*(i-j), j*dp[i-j]);
                if (temp > dp[i]){
                    dp[i] = temp;
                }
            }
        }
        return dp[n];
    }
}

坑:
內(nèi)for循環(huán)中,j <= i/2;而不是<;
Math.max()里面的參數(shù)數(shù)量只能是2

2. 代碼隨想錄-動規(guī)9.LC96不同的二叉搜索樹

題目鏈接
dp數(shù)組含義:dp[i]表示由i個節(jié)點(diǎn)組成二叉搜索樹的種數(shù)
遞推公式
n為2時,頭節(jié)點(diǎn)為1,有1種方式;頭節(jié)點(diǎn)為2,有1種方式。
【每日刷題】動態(tài)規(guī)劃-代碼隨想錄動規(guī)-8、9,動態(tài)規(guī)劃,算法,java,leetcode,數(shù)據(jù)結(jié)構(gòu)
n為3時,種數(shù)等于頭節(jié)點(diǎn)為1的種數(shù)+頭節(jié)點(diǎn)為2的種數(shù)+頭節(jié)點(diǎn)為3的種數(shù)
頭節(jié)點(diǎn)為1的種數(shù) = dp[0] * dp[2],左子數(shù)無,右子樹2個節(jié)點(diǎn)
頭節(jié)點(diǎn)為2的種數(shù) = dp[1] * dp[1],左子樹1個節(jié)點(diǎn),右子樹1個節(jié)點(diǎn)
頭節(jié)點(diǎn)為3的種數(shù) = dp[2] * dp[0],左子樹2個節(jié)點(diǎn),右子樹無
【每日刷題】動態(tài)規(guī)劃-代碼隨想錄動規(guī)-8、9,動態(tài)規(guī)劃,算法,java,leetcode,數(shù)據(jù)結(jié)構(gòu)

所以,公式為:
dp[i] += dp[j-1] * dp[i-j];
從1遍歷j,直到i
初始化:dp[0] = 1; dp[1] = 1;

代碼:

class Solution {
    public int numTrees(int n) {
        int[] dp = new int[n+1];
        dp[0] = 1;
        dp[1] = 1;
        for (int i = 2; i < dp.length; i++){
            for (int j = 1; j <= i; j++){
                dp[i] += dp[j-1] * dp[i-j];
            }
        }
        return dp[dp.length-1];
    }
}

思考:學(xué)會分類很重要。分對類了事半功倍!文章來源地址http://www.zghlxwxcb.cn/news/detail-782262.html

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

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

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

相關(guān)文章

  • 二刷代碼隨想錄——動態(tài)規(guī)劃day40

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

    2024年03月11日
    瀏覽(85)
  • 代碼隨想錄第41天 | 動態(tài)規(guī)劃part03

    代碼隨想錄第41天 | 動態(tài)規(guī)劃part03

    ● 343. 整數(shù)拆分 ● 96.不同的二叉搜索樹 題目一 343. 整數(shù)拆分 給定一個正整數(shù) n,將其拆分為至少兩個正整數(shù)的和,并使這些整數(shù)的乘積最大化。 返回你可以獲得的最大乘積。 示例 : 輸入: 10 輸出: 36 解釋: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。 說明: 你可以假設(shè) n 不小于 2 且不大于 5

    2024年01月24日
    瀏覽(26)
  • 代碼隨想錄算法訓(xùn)練51 | 動態(tài)規(guī)劃part12

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

    2024年01月18日
    瀏覽(51)
  • 代碼隨想錄 動態(tài)規(guī)劃-子序列問題-子序列(連續(xù))

    代碼隨想錄 動態(tài)規(guī)劃-子序列問題-子序列(連續(xù))

    目錄 674.最長連續(xù)遞增序列? 718.最長重復(fù)子數(shù)組 53.最大子數(shù)組和? 674. 最長連續(xù)遞增序列 簡單 給定一個未經(jīng)排序的整數(shù)數(shù)組,找到最長且 ?連續(xù)遞增的子序列 ,并返回該序列的長度。 連續(xù)遞增的子序列 ?可以由兩個下標(biāo)? l ?和? r ( l r )確定,如果對于每個? l = i r ,都

    2024年04月09日
    瀏覽(20)
  • 代碼隨想錄Day41:動態(tài)規(guī)劃Part3

    代碼隨想錄Day41:動態(tài)規(guī)劃Part3

    講解前: 毫無頭緒 講解后: 這道題的動態(tài)思路一開始很不容易想出來,雖然dp數(shù)組的定義如果知道是動態(tài)規(guī)劃的話估摸著可以想出來那就是很straight forward dp定義:一維數(shù)組dp[i], i 代表整數(shù)的值,dp[i] 代表將整數(shù) i 拆分的話可以獲得的最大乘積 然后呢就是定義遞歸推導(dǎo)式了,

    2024年04月27日
    瀏覽(27)
  • 代碼隨想錄 day38 第九章 動態(tài)規(guī)劃part01

    ●??理論基礎(chǔ) ●??509.?斐波那契數(shù) ●??70.?爬樓梯 ●??746.?使用最小花費(fèi)爬樓梯 理論基礎(chǔ) 解決動態(tài)規(guī)劃必須要想清楚的點(diǎn) dp數(shù)組以及下標(biāo)的含義 遞推公式 dp數(shù)組如何初始化 遍歷順序 打印數(shù)組 檢查結(jié)果 關(guān)聯(lián) leetcode 509.?斐波那契數(shù) 思路 動規(guī)五部曲 dp數(shù)組以及下標(biāo)的含義

    2024年04月17日
    瀏覽(30)
  • 【代碼隨想錄】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](因?yàn)椴毁u股票,所以狀態(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í)驗(yàn)設(shè)備、文獻(xiàn)資料和實(shí)驗(yàn)樣本等等,它們各自占據(jù)不同的空間,并且具有不同的價值。? 小明的行李空間

    2024年04月23日
    瀏覽(32)
  • 代碼隨想錄 動態(tài)規(guī)劃 判斷子序列,不同的子序列

    392. 判斷子序列 給定字符串? s ?和? t ?,判斷? s ?是否為? t ?的子序列。 字符串的一個子序列是原始字符串刪除一些(也可以不刪除)字符而不改變剩余字符相對位置形成的新字符串。(例如, \\\"ace\\\" 是 \\\"abcde\\\" 的一個子序列,而 \\\"aec\\\" 不是)。 思路: 1. 使用哈希統(tǒng)計兩個序

    2024年02月07日
    瀏覽(26)
  • 【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)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包