代碼隨想錄訓練營Day 43|力扣343. 整數拆分、96.不同的二叉搜索樹

1.整數拆分

代碼隨想錄

視頻講解:動態規劃,本題關鍵在于理解遞推公式!| LeetCode:343. 整數拆分_嗶哩嗶哩_bilibili

代碼:

class Solution {
public:int integerBreak(int n) {// dp[i] 拆分數字i所獲得的最大乘積為dp[i]vector<int> dp(n + 1,0);// 初始化dp[2] = 1;// 遞推公式for(int i = 3;i <= n; i++){for(int j = 1;j < i - 1; j++){dp[i] =max(dp[i], max(j * (i - j),j * dp[i - j]));}}return dp[n];}
};

?思路:

dp數組的含義:拆分數字i所獲得的最大乘積為dp[i]

dp數組的遞推公式:分為兩種情況,拆分為兩個數字,拆分為兩個以上的數字。因此,dp[i] =max(dp[i], max(j * (i - j),j * dp[i - j]))。

????????這里要強調的是:max函數里dp[i]是為了去記錄 之前遍歷j的不同數值時的 等號左邊的最終要求得的dp[i] 可能取到的最大值——通過不斷更新 dp[i] 的值,我們可以在動態規劃的過程中找到拆分數字 i 所獲得的最大乘積。也正是因為這種記錄歷史信息的方式,我們才能夠不斷地比較并選擇最優解,從而得到最終的結果。

dp數組的初始化:從dp[2]開始有意義,dp[2]初始化為1

遍歷順序:從左到右

2.不同的二叉搜索樹?

代碼隨想錄

視頻講解:動態規劃找到子狀態之間的關系很重要!| LeetCode:96.不同的二叉搜索樹_嗶哩嗶哩_bilibili

代碼:

class Solution {
public:int numTrees(int n) {// dp[i]表示i個節點組成的互不相同的二叉搜索樹的種類vector<int> dp(n + 1,0);// 初始化dp[0] = 1;// 遞推公式for(int i = 1; i <= n; i++){for(int j = 1;j <= i ;j++){dp[i] += dp[j - 1] * dp[i - j];}}return dp[n];}
};

?思路:

dp數組的含義:dp[i]表示i個節點組成的互不相同的二叉搜索樹的種類

dp數組的遞推公式:確認好一個節點為根結點,dp[i]就等于 它的不同數目左右子樹的種類和的乘積 的總和。即dp[i] += dp[j - 1] * dp[i - j]

dp數組的初始化:

從遞歸公式上來講,dp[以j為頭結點左子樹節點數量] * dp[以j為頭結點右子樹節點數量] 中以j為頭結點左子樹節點數量為0,也需要dp[以j為頭結點左子樹節點數量] = 1, 否則乘法的結果就都變成0了。

因此dp[0] = 1

遍歷順序:從左到右?

我在做這道題的時候,犯了兩個錯,一個是我忘記左右子樹的節點總數是i-1了,另一個是dp[i]對應著不同數目的左右子樹,因此它是取不同情況的總和數。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/19150.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/19150.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/19150.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

景源暢信:抖音小店如何開櫥窗?

在當今數字化時代&#xff0c;社交媒體平臺不僅僅是人們交流和分享生活的工具&#xff0c;更成為了商家們展示和銷售產品的重要場所。抖音作為一款流行的短視頻社交應用&#xff0c;其內置的電商功能——抖音小店&#xff0c;為眾多商家和個人提供了便捷的在線銷售途徑。其中&a…

使用NuScenes數據集生成ROS Bag文件:深度學習與機器人操作的橋梁

在自動駕駛、機器人導航及環境感知的研究中&#xff0c;高質量的數據集是推動算法發展的關鍵。NuScenes數據集作為一項開源的多模態自動駕駛數據集&#xff0c;提供了豐富的雷達、激光雷達&#xff08;LiDAR&#xff09;、攝像頭等多種傳感器數據&#xff0c;是進行多傳感器融合…

Go語言 gRPC 簡述

參考文章 grpc-我們為什么要用gRpc&#xff1f;gRpc快在哪里&#xff1f;_grpc 優點-CSDN博客 GRPC詳解-CSDN博客 1. 什么是gRPC gRPC 是一個高性能 遠程調用(RPC)框架&#xff0c;屏蔽分布式計算中的各種調用細節&#xff0c;可以像本地調用一樣調用遠程的函數。 2. 為什么要…

jmeter多用戶并發登錄教程

有時候為了模擬更真實的場景&#xff0c;在項目中需要多用戶登錄操作&#xff0c;大致參考如下 jmx腳本&#xff1a;百度網盤鏈接 提取碼&#xff1a;0000 一&#xff1a; 單用戶登錄 先使用1個用戶登錄&#xff08;先把1個請求調試通過&#xff09; 發送一個登錄請求&…

貪心(臨項交換)+01背包,藍橋云課 搬磚

一、題目 1、題目描述 2、輸入輸出 2.1輸入 2.2輸出 3、原題鏈接 0搬磚 - 藍橋云課 (lanqiao.cn) 二、解題報告 1、思路分析 將物品按照w[i] v[i]升序排序然后跑01背包就是答案 下面證明&#xff1a;&#xff08;不要問怎么想到的&#xff0c;做題多了就能想到&#xff…

AVB協議分析(一) FQTSS協議介紹

FQTSS協議介紹 一、AVB整體架構二、概述三、協議作用及作用對象四、協議的實現五、參考文獻&#xff1a; 一、AVB整體架構 可見FQTSS位于MAC層的上面&#xff0c;代碼看不懂&#xff0c;咱們就從最底層開始&#xff0c;逐層分析協議&#xff0c;逐個擊破&#xff0c;慢就是快。…

基于GO 寫的一款 GUI 工具,M3u8視頻下載播放器-飛鳥視頻助手

M3u8視頻下載播放器-飛鳥視頻助手 M3u8視頻飛鳥視頻助手使用m3u8下載m3u8 本地播放 軟件下載地址m3u8嗅探 M3u8視頻 M3u8視頻格式是為網絡視頻播放設計&#xff0c;視頻網站多數采用 m3u8格式。如騰訊&#xff0c;愛奇藝等網站。 m3u8和 mp4的區別&#xff1a; 一個 mp4是一個…

【PB案例學習筆記】-12秒表實現

寫在前面 這是PB案例學習筆記系列文章的第11篇&#xff0c;該系列文章適合具有一定PB基礎的讀者。 通過一個個由淺入深的編程實戰案例學習&#xff0c;提高編程技巧&#xff0c;以保證小伙伴們能應付公司的各種開發需求。 文章中設計到的源碼&#xff0c;小凡都上傳到了gite…

Python3 筆記:math模塊

要使用 math 函數必須先導入math模塊 語法&#xff1a;import math Python math 模塊提供了許多對浮點數的數學運算函數。 math 模塊下的函數&#xff0c;返回值均為浮點數&#xff0c;除非另有明確說明。 如果需要計算復數&#xff0c;需使用 cmath 模塊中的同名函數。 m…

【2.文件和目錄相關(下)】

一、查看文件內容命令 1、cat 文件名&#xff1a;用于顯示文件內容&#xff0c;比如 cat test.c。 &#xff08;1&#xff09;cat -b test.c 表示加行號顯示文件內容。 &#xff08;2&#xff09;cat -s test.c 表示多個空行合并成一個空行顯示。 2、nl 文件名&#xff1a;…

2024 京麟ctf -MazeCodeV1

文章目錄 檢查代碼思路一個字節的指令注意附上S1uM4i佬們的exp https://www.ctfiot.com/184181.html 檢查 代碼 __int64 __fastcall check_solve(char *a1) {__int64 result; // rax__int64 v2; // rax__int64 index_step; // rax__int64 v4; // rax__int64 v5; // rax__int64…

vb.net,C#強制結束進程,“優雅”的退出方式

在VB.NET中&#xff0c;Application.Exit()和Environment.Exit(0)都用于結束程序&#xff0c;但它們的使用場景和背后的邏輯略有不同。 **Application.Exit()**&#xff1a; Application.Exit()通常用于Windows Forms應用程序中。當調用Application.Exit()時&#xff0c;它會觸…

cocos 屏幕點擊坐標轉換為節點坐標

let scPos event.getLocation(); let camera find(Canvas/Camera).getComponent(Camera).screenToWorld(new Vec3(scPos.x,scPos.y,0));//攝像機 let p this.node.getComponent(UITransform).convertToNodeSpaceAR(camera);//this.node為指定的節點為原點&#xff08;0,0&…

MVC架構中的servlet層重定向404小坑

servlet層中的UserLoginServlet.java package com.mhys.servlet; /*** ClassName: ${NAME}* Description:** Author 數開_11* Create 2024-05-29 20:32* Version 1.0*/import com.mhys.pojo.User; import com.mhys.service.UserService; import com.mhys.service.impl.UserSer…

Unix環境高級編程--8-進程控制---8.7函數waitid 8.8函數wait3 wait4

1、Single Unix Specification支持一個取得進程終止狀態的函數--waitid&#xff0c;此函數類似于waitpid&#xff1a; pid_t wait(int *status); pid_t waitpid(pid_t pid, int *status, int options); int waitid(idtype_t idtype, id_t id, siginfo_t *infop, int options); …

MySQL之創建高性能的索引(六)

創建高性能的索引 選擇合適的索引列順序 當使用前綴索引的時候&#xff0c;在某些條件值的基數比正常值高的時候&#xff0c;問題就來了。例如&#xff0c;在某些應用程序中&#xff0c;對于沒有登錄的用戶&#xff0c;都將其用戶名記錄為"guest"&#xff0c;在記錄…

【axios】的淺度分析

一、Axios的攔截器能干些什么&#xff1f; Axios攔截器的實現原理主要涉及兩個方面&#xff1a;請求攔截器和響應攔截器&#xff0c;它們分別在請求發送前和響應返回后進行預處理和后處理。 Axios內部維護了兩個數組&#xff0c;一個用于存儲請求攔截器&#xff0c;另一個用于…

數據庫基礎+增刪查改初階

數據庫基礎增刪查改初階 一。數據庫操作 1.概念&#xff1a; 一個mysql服務器上有很多的表&#xff0c;把有關系的表放在一起就構成了一個數據集合&#xff0c;此時稱為“數據庫”&#xff0c;一個mysql1服務器上可以有多個這樣的數據庫 2.創建數據庫&#xff1a; create …

穩住!一招制勝:打造JavaScript防抖函數的終極指南【含代碼示例】

穩住&#xff01;一招制勝&#xff1a;打造JavaScript防抖函數的終極指南【含代碼示例】 防抖函數&#xff1a;概念與作用基礎實現&#xff1a;案例一簡單防抖函數使用示例 進階功能&#xff1a;案例二 - 立即執行版本性能優化與安全考量實戰技巧與問題排查實際問題與解決方案結…

基于python flask的旅游數據大屏實現,有爬蟲有數據庫

背景 隨著旅游行業的快速發展&#xff0c;數據在旅游決策和規劃中的重要性日益凸顯。基于 Python Flask 的旅游數據大屏實現研究旨在結合爬蟲技術和數據庫存儲&#xff0c;為用戶提供全面、實時的旅游信息展示平臺。 爬蟲技術作為數據采集的重要手段&#xff0c;能夠從各種網…