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

LeetCode算法題解(動態(tài)規(guī)劃)|LeetCode343. 整數(shù)拆分、LeetCode96. 不同的二叉搜索樹

這篇具有很好參考價值的文章主要介紹了LeetCode算法題解(動態(tài)規(guī)劃)|LeetCode343. 整數(shù)拆分、LeetCode96. 不同的二叉搜索樹。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、LeetCode343. 整數(shù)拆分

題目鏈接:343. 整數(shù)拆分
題目描述:

給定一個正整數(shù)?n?,將其拆分為?k?個?正整數(shù)?的和(?k >= 2?),并使這些整數(shù)的乘積最大化。

返回?你可以獲得的最大乘積?。

示例 1:

輸入: n = 2
輸出: 1
解釋: 2 = 1 + 1, 1 × 1 = 1。

示例?2:

輸入: n = 10
輸出: 36
解釋: 10 = 3 + 3 + 4, 3 ×?3 ×?4 = 36。

提示:

  • 2 <= n <= 58
算法分析:
定義dp數(shù)組及下標含義:

dp[i]表述正整數(shù)i拆分成k個正整數(shù)乘積所能夠得到的最大值。

遞推公式:

用一個j來遍歷從1到i,得到兩個dp[i],即dp[i]=j*(i-j)(將整數(shù)i分成兩個正整數(shù)j和i-j),和dp[i]=j*dp[i-j]。

所以dp[i] = max(dp[i],max(j*(i-j),j*dp[i-j]))。

初始化:

dp[0]和dp[1]初始化沒有意義,所以我們初始化dp[2]=1(2拆分成兩個1相乘)。

遍歷順序:

因為dp[2]已經(jīng)初始化了,所以我們從3遍歷到n。

代碼如下:

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

時間復(fù)雜度o(n^2),空間復(fù)雜度o(n)。

二、LeetCode96. 不同的二叉搜索樹

題目鏈接:96. 不同的二叉搜索樹
題目描述:

給你一個整數(shù)?n?,求恰由?n?個節(jié)點組成且節(jié)點值從?1?到?n?互不相同的?二叉搜索樹?有多少種?返回滿足題意的二叉搜索樹的種數(shù)。

示例 1:

LeetCode算法題解(動態(tài)規(guī)劃)|LeetCode343. 整數(shù)拆分、LeetCode96. 不同的二叉搜索樹,算法,leetcode,動態(tài)規(guī)劃,java

輸入:n = 3
輸出:5

示例 2:

輸入:n = 1
輸出:1

提示:

  • 1 <= n <= 19
算法分析:
定義dp數(shù)組及下標含義:

dp[i]表示i個節(jié)點組成的二叉搜索樹的種樹。

遞推公式:

j從1遍歷到i,當j為頭節(jié)點時,左子樹有i-1個節(jié)點,左子樹的種類數(shù)相當于dp[j-1],右子樹有i-j個節(jié)點,右子樹的種類數(shù)相當于dp[i-j]。

所以dp[i]+=dp[j-1]*dp[i-j],j從1比那里遍歷到i;

初始化:

dp[0]初始化為1(0的話會影響乘法結(jié)果),dp[1]初始化為1(一個節(jié)點的二叉搜索樹只有一種情況)

遍歷順序:

i從2遍歷到n,然后確定dp[i](dp[i]+=dp[j-1]*dp[i-j])。

如果結(jié)果有誤打印dp數(shù)組檢查驗證。

代碼如下:

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

時間復(fù)雜度o(n^2),空間復(fù)雜度o(n)

總結(jié)

這兩道題還是比較難的,自己想很難有思路。文章來源地址http://www.zghlxwxcb.cn/news/detail-761482.html

到了這里,關(guān)于LeetCode算法題解(動態(tài)規(guī)劃)|LeetCode343. 整數(shù)拆分、LeetCode96. 不同的二叉搜索樹的文章就介紹完了。如果您還想了解更多內(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)文章

  • 【力扣】343. 整數(shù)拆分 <動態(tài)規(guī)劃、數(shù)學(xué)>

    給定一個正整數(shù) n ,將其拆分為 k 個 正整數(shù) 的和( k = 2 ),并使這些整數(shù)的乘積最大化。返回可以獲得的最大乘積 。 示例 1: 輸入: n = 2 輸出: 1 解釋: 2 = 1 + 1, 1 × 1 = 1。 示例 2: 輸入: n = 10 輸出: 36 解釋: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。 提示: 2 = n = 58 動態(tài)規(guī)劃 確定 dp 數(shù)組以及下

    2024年02月09日
    瀏覽(21)
  • 算法訓(xùn)練第四十一天|343. 整數(shù)拆分 、96.不同的二叉搜索樹

    算法訓(xùn)練第四十一天|343. 整數(shù)拆分 、96.不同的二叉搜索樹

    題目鏈接:343. 整數(shù)拆分 參考:https://programmercarl.com/0343.%E6%95%B4%E6%95%B0%E6%8B%86%E5%88%86.html 題目描述 給定一個正整數(shù) n,將其拆分為至少兩個正整數(shù)的和,并使這些整數(shù)的乘積最大化。 返回你可以獲得的最大乘積。 示例 1: 輸入: 2 輸出: 1 解釋: 2 = 1 + 1, 1 × 1 = 1。 示例 2: 輸入:

    2023年04月24日
    瀏覽(23)
  • 【算法與數(shù)據(jù)結(jié)構(gòu)】343、LeetCode整數(shù)拆分

    【算法與數(shù)據(jù)結(jié)構(gòu)】343、LeetCode整數(shù)拆分

    所有的LeetCode題解索引,可以看這篇文章——【算法和數(shù)據(jù)結(jié)構(gòu)】LeetCode題解。 ?? 思路分析 :博主做這道題的時候一直在思考,如何找到 k k k 個正整數(shù), k k k 究竟為多少合適。從數(shù)學(xué)的邏輯上來說,將 n n n 均分為 k k k 個數(shù)之后, k k k 個數(shù)的乘積為最大(類似于相同周長

    2024年01月17日
    瀏覽(23)
  • 算法刷刷刷|動態(tài)規(guī)劃篇|509.斐波那契數(shù)| 70.爬樓梯| 746.使用最小花費爬樓梯| 62.不同路徑| 63不同路徑2| 343.正數(shù)拆分 | 96.不同的二叉搜索樹

    509. 斐波那契數(shù) 斐波那契數(shù) (通常用 F(n) 表示)形成的序列稱為 斐波那契數(shù)列 。該數(shù)列由 0 和 1 開始,后面的每一項數(shù)字都是前面兩項數(shù)字的和。也就是: F(0) = 0,F(xiàn)(1) = 1 F(n) = F(n - 1) + F(n - 2),其中 n 1 給定 n ,請計算 F(n) 。 70.爬樓梯 746.使用最小花費爬樓梯 給你一個整數(shù)

    2023年04月23日
    瀏覽(24)
  • 我在代碼隨想錄|寫代碼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++項目 ?? 當前專欄: 算法入門 專題 : 數(shù)據(jù)結(jié)構(gòu)幫助小白快速入門算法 ???????????????????????? ☆*: .?. o(≧▽≦)o .?.:*☆ ??感謝大家點贊??收藏?評論?? 今日學(xué)習(xí)打卡 代碼隨想錄 - 動態(tài)規(guī)劃

    2024年03月11日
    瀏覽(96)
  • 代碼隨想錄Leetcode 343. 整數(shù)拆分

    代碼隨想錄Leetcode 343. 整數(shù)拆分

    ? ? ? ? dp[i]表示i所能拆分的最大乘積,則dp[i] 與dp[i - 1]的遞推公式是: ? ? ? ? ? ? ? ? max( 1~n * dp[n ~ 1])

    2024年02月21日
    瀏覽(100)
  • 343. 整數(shù)拆分

    343. 整數(shù)拆分

    343. 整數(shù)拆分 https://leetcode.cn/problems/integer-break/description/ 貼一張對比數(shù)據(jù)圖,大家可以自行驗證,是否上述規(guī)律會得到正確答案。

    2024年02月14日
    瀏覽(24)
  • Leetcode題解-算法-動態(tài)規(guī)劃(python版)

    1.1 爬樓梯 70. 爬樓梯(Easy) 走n階樓梯的方法有兩種,1、先走 1 級臺階,再走 n-1 級臺階;2、先走 2 級臺階,再走 n-2 級臺階 f(n) = f(n-1) + f(n-2) 1.2 強盜搶劫 198. 打家劫舍(Medium) 每個房間財產(chǎn)為 nums[0]……nums[n-1]。 假設(shè) 0 至 x 間房獲得的最大財產(chǎn)為 f(x)。 f(x) = max(f(x-1),f(x-2)+nums[

    2024年02月03日
    瀏覽(26)
  • 整數(shù)拆分(力扣)動態(tài)規(guī)劃 JAVA

    整數(shù)拆分(力扣)動態(tài)規(guī)劃 JAVA

    給定一個正整數(shù) n ,將其拆分為 k 個 正整數(shù) 的和( k = 2 ),并使這些整數(shù)的乘積最大化。 返回 你可以獲得的最大乘積 。 示例 1: 輸入: n = 2 輸出: 1 解釋: 2 = 1 + 1, 1 × 1 = 1。 示例 2: 輸入: n = 10 輸出: 36 解釋: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。 提示: 2 = n = 58 里程碑意義 解題思路:

    2024年02月17日
    瀏覽(23)
  • 【力扣刷題】整數(shù)拆分(動態(tài)規(guī)劃)

    【力扣刷題】整數(shù)拆分(動態(tài)規(guī)劃)

    個人簡歷: 全棧領(lǐng)域新星博主, 萬粉博主、 幫助初學(xué)者入門,記錄自己的學(xué)習(xí)過程 個人主頁:天寒雨落的博客_CSDN博客-C,CSDN競賽,python領(lǐng)域博主 熱門專欄:初學(xué)者入門C語言_天寒雨落的博客-CSDN博客 ? 目錄 動態(tài)規(guī)劃 整數(shù)拆分 題目 思路 代碼 執(zhí)行結(jié)果 其基本思想是將待求解

    2024年02月03日
    瀏覽(22)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包