力扣熱題100-----118.楊輝三角

案例

給定一個非負整數 numRows,生成「楊輝三角」的前 numRows 行。

在「楊輝三角」中,每個數是它左上方和右上方的數的和。

示例 1:

輸入: numRows = 5
輸出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
示例 2:

輸入: numRows = 1
輸出: [[1]]

提示:

1 <= numRows <= 30

思路: 我們運用動態規劃法 我們先生成第一行 因為第一行只有一個數字那就是1 然后我們需要找到他的狀態轉移方程 也就是當前這一行的除了第一個和最后一個 都為他的上一排的前一個和第二個的和 所以要我們就得出他的狀態轉移方程 down.get[j]=up.get(j-1)+up.get(j) 最后返回list

  1. 定義狀態:? 使用數組 list ,其中 first表示第一行。
  2. 初始化狀態:first=1
  3. 狀態轉移:? 對于 第二行 ,根據狀態轉移方程更新:
    狀態轉移方程就為down.get(j)=up.get(j-1)+up.get(j)
  4. 計算順序:? 從第 2 層開始,逐步計算到第 n 層 將他依次添加到list中。
  5. 返回結果:? 最終結果為 list 。
class Solution {public List<List<Integer>> generate(int numRows) {List<List<Integer>> list= new ArrayList<>();//生成第一行List<Integer> first=new ArrayList<>();first.add(1);list.add(first);//逐行生成for(int i=1;i<numRows;i++){List<Integer> down=new ArrayList<>();List<Integer> up=list.get(i-1);down.add(1);//第一個數字是1for(int j=1;j<i;j++){down.add(up.get(j-1)+up.get(j));}down.add(1);list.add(down);}return list;}
}

動態規劃法:

動態規劃法介紹:

動態規劃(Dynamic Programming,簡稱 DP)是一種用于解決多階段決策問題的算法思想,它通過將復雜問題分解為更簡單的子問題,并存儲這些子問題的解以避免重復計算,從而高效地解決問題。動態規劃通常用于優化問題,尤其是那些具有重疊子問題和最優子結構特性的問題。

核心概念

? 最優子結構:

? 一個問題的最優解可以由其子問題的最優解組合而成。換句話說,問題的解可以分解為若干個子問題的解。

? 例如,在爬樓梯問題中,到達第(n)階的方法數可以由到達第(n-1)階和第(n-2)階的方法數組合而成。

? 重疊子問題:

? 在遞歸求解過程中,同一個子問題會被多次計算。動態規劃通過存儲這些子問題的解(通常使用一個數組或哈希表),避免重復計算,從而提高效率。

? 例如,在遞歸計算斐波那契數列時,會多次計算相同的值,而動態規劃通過存儲這些值來避免重復計算。

動態規劃的優勢
? 高效性:

? 動態規劃通過存儲子問題的解,避免了重復計算,大大提高了算法的效率。時間復雜度通常為(O(n))。

? 適用性:

? 動態規劃適用于具有重疊子問題和最優子結構特性的問題,如背包問題、最長公共子序列、最短路徑問題等。

? 可擴展性:

? 動態規劃的思想可以擴展到多維問題,通過增加狀態維度來解決更復雜的問題。

動態規劃的局限性
? 空間復雜度:

? 動態規劃通常需要額外的空間來存儲子問題的解,空間復雜度可能較高。例如,爬樓梯問題的空間復雜度為(O(n))。

? 狀態轉移方程的推導:

? 動態規劃的關鍵在于推導狀態轉移方程,這需要對問題有深入的理解和分析。

? 適用范圍:

? 動態規劃只適用于具有重疊子問題和最優子結構特性的問題,對于不符合這些特性的問題,動態規劃可能不適用。

總結

動態規劃是一種強大的算法思想,通過將復雜問題分解為更簡單的子問題,并存儲這些子問題的解,避免重復計算,從而高效地解決問題。爬樓梯問題是動態規劃的經典應用之一,通過定義狀態、初始化狀態、狀態轉移和計算順序,可以高效地求解問題。

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

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

相關文章

NTP /Chrony 網絡時間協議

一、NTP&#xff08;network time protocol&#xff09;網絡時間協議&#xff1a;實現時間同步&#xff0c;讓設備時間與國際標準時間保持一致設備日志、服務日志需要記錄時間分布式系統&#xff08;分布式數據庫、分布式緩存、分布式儲存、消息隊列&#xff09;時間戳&#xf…

VSCode 刷 LeetCode 算法題配置教程

LeetCode 在線刷題地址&#xff1a;https://leetcode-cn.com/ 一、安裝 Node.js 環境 LeetCode 插件依賴 node.js 運行環境&#xff0c;因此必須先安裝&#xff1a; 前往官網下載安裝&#xff1a;https://nodejs.cn/download/下載好的壓縮包解壓&#xff0c;可以看到當前文件…

非常簡單!從零學習如何免費制作一個lofi視頻

想必大家在網上會看到如下類似的音樂頻道&#xff0c;這類頻道都只是上傳簡單的Lo-Fi音樂帶著循環播放的背景就可以賺錢。 那么上面的效果如何實現的呢&#xff1f;今天做一個可以免費制作lo-Fi音樂的教程。 Lo-Fi音樂&#xff1a; Lo-Fi音樂是一種以低保真度和模擬音色為特點…

基于 RAUC 的 Jetson OTA 升級全攻略

&#x1f4d6; 推薦閱讀&#xff1a;《Yocto項目實戰教程:高效定制嵌入式Linux系統》 &#x1f3a5; 更多學習視頻請關注 B 站&#xff1a;嵌入式Jerry 基于 RAUC 的 Jetson OTA 升級全攻略 0. 引子&#xff1a;常見問題 在 Jetson 平臺做 OTA 升級時&#xff0c;你可能會問&…

MySQL 主備(Master-Slave)復制 的搭建

一、主備架構簡介 Master&#xff08;主庫&#xff09;&#xff1a;負責處理所有寫操作&#xff08;INSERT/UPDATE/DELETE&#xff09;&#xff0c;并記錄二進制日志&#xff08;binlog&#xff09;。Slave&#xff08;備庫&#xff09;&#xff1a;從主庫拉取 binlog&#xff…

【三個數絕對值排序】2022-10-10

緣由絕對值比較&#xff0c;總是跑不過怎么辦-編程語言-CSDN問答 template <class 形參> inline void 算交換(形參& a, 形參& b){ 形參 ab a - b; a - ab; b ab; } template <class 形參> void 三個升序(形參& a, 形參& b, 形參& c) {if (a…

【LoRA模型訓練】Stable Diffusion LoRA 模型秋葉訓練器詳細教程

一、工具簡介與安裝指南 1.1 秋葉 LoRA 訓練器概述 秋葉 LoRA 訓練器&#xff08;基于 Akegarasu/lora-scripts 項目&#xff09;是針對 Stable Diffusion 模型的輕量化微調工具&#xff0c;通過低秩適應&#xff08;LoRA&#xff09;技術實現高效參數微調。其核心優勢在于&a…

C++2024 年一級

1 單選題 (每題 2 分,共 30 分) 12 ? 題號 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 答案 C C D B B D B C C C D C D B D 第 1 題 2024年10?8? &#xff0c;諾貝爾物理學獎“意外地”頒給了兩位計算機科學家約翰霍普菲爾德&#xff08;John J. Hopfield&#xff09;和杰 弗??…

react-window

下面&#xff0c;我們來系統的梳理關于 React 虛擬化列表&#xff1a;react-window 的基本知識點&#xff1a;一、虛擬化列表核心概念 1.1 什么是虛擬化列表&#xff1f; 虛擬化列表&#xff08;也稱為窗口化&#xff09;是一種只渲染當前可見區域列表項的技術&#xff0c;而不…

2025AI顛覆認知!解鎖智能新紀元

清晨的城市還裹著薄霧時&#xff0c;通勤族的手機已經自動規劃好最優路線——避開施工路段、實時更新交通狀況&#xff0c;連早餐店排隊人數都能精準預測。這不是科幻電影里的片段&#xff0c;而是2025年AI深度融入生活的尋常場景。當數字化與智能化浪潮席卷而來&#xff0c;我…

實用Shell高級視頻課程

實用Shell高級視頻課程 Shell三劍客sed我網盤給你分享了「實用Shell高級視頻課程」&#xff0c;點擊鏈接或復制整段內容&#xff0c;打開「APP」即可獲取。/bc3b37jg8i:/鏈接&#xff1a;http://t.cn/A6swtV7u提取碼&#xff1a;ePV4 ???

hive-日期拆分為多行

hive-日期拆分為多行 代碼 SELECT begin_date,date_add(begin_date, tmp.pos),end_date,d_days,tmp.pos,tmp.val FROM (SELECT begin_date,end_date,DATEDIFF(end_date, begin_date) AS d_daysFROM (SELECT 2025-08-01 AS begin_date,2025-08-10 AS end_date) a) b LA…

全志MPP學習(1)-全志MPP概念理清

文章目錄1、全志MPP1.1、MPP-Framework1.2、MPP-Middleware1.3、MPP-Framework和MPP-Middleware之間的關系2、總結1、全志MPP 全志MPP&#xff08;Media Process Platform&#xff09;媒體處理軟件平臺&#xff0c;分為 mpp-middleware 和 mpp-framework 兩部分。 mpp-middlew…

Linux操作系統啟動項相關研究與總結

Linux操作系統啟動項相關研究與總結 一、Linux Systemd 服務創建與管理研究 1. Systemd 服務基礎 1.1 Systemd 服務文件位置 1.2 服務文件基本結構 2. 創建自定義 Systemd 服務 2.1 基本服務文件示例 2.2 服務文件詳細配置選項 [Unit] 部分常用指令: [Service] 部分常用指令:…

Go map 的性能革命:深入解析從鏈表到 Swiss Table 的優化之路

你好&#xff0c;Gopher&#xff01;map 作為 Go 語言中最核心、最常用的數據結構之一&#xff0c;其性能直接影響著我們程序的效率。在 Go 1.24 版本中&#xff0c;map的底層實現迎來了一次意義深遠的變革&#xff0c;從沿用多年的“哈希桶鏈表”結構&#xff0c;悄然升級為了…

化工廠安全升級:分布式光纖傳感的 “實時監測 + 精準預警” 方案

分布式光纖傳感技術憑借長距離連續監測、抗電磁干擾、耐腐蝕、高靈敏度、實時響應等特性&#xff0c;非常適配化工領域中化學原料及化學制品工廠的復雜環境&#xff0c;如高溫、高壓、腐蝕性介質、強電磁干擾等&#xff0c;在安全生產、設備維護、風險預警等方面發揮著關鍵作用…

供應鏈需求預測項目如何設定合理的KPI、準確率指標(十四)

本篇文章適合希望優化供應鏈管理的讀者&#xff0c;尤其是對KPI的選擇與應用有興趣的人。文章的亮點在于揭示了不當KPI使用可能導致的風險&#xff0c;如狹隘的關注、協作減少和與業務目標不一致等&#xff0c;同時提供了如何選擇合適KPI的最佳實踐。 本文整合自文章&#xff…

【線性代數】線性方程組與矩陣——(1)線性方程組與矩陣初步

上一節&#xff1a;無 總目錄&#xff1a;【線性代數】目錄 文章目錄1. 線性方程組2. 矩陣的引入2.1. 矩陣的定義2.2. 常見的矩陣2.3. 線性方程組中常用的矩陣2.4. 線性變換與矩陣3. 矩陣的運算3.1. 矩陣的加法3.2. 矩陣的數乘3.3. 矩陣的乘法3.4. 矩陣的轉置3.5. 方陣的行列式…

【工具變量】地市人力資本水平數據集(2003-2023年)

數據簡介&#xff1a;普通本專科在校學生數作為人力資本的代理變量&#xff0c;能夠直觀反映區域教育投入與人才儲備規模。通過與戶籍人口數比值計算&#xff0c;可消除人口基數差異&#xff0c;實現跨區域人力資本水平的橫向比較。 人力資本水平是個體價值創造能力與國家競爭…

輕量化閱讀應用實踐:21MB無廣告電子書閱讀器測評

還在為廣告滿天飛的閱讀軟件煩惱嗎&#xff1f;今天阿燦給大家推薦一款純凈好用的閱讀神器&#xff0c;安讀&#xff01;這款app只有21MB大小&#xff0c;但功能真的很貼心。最棒的是完全沒廣告&#xff0c;讓你能靜下心來好好看書。支持各種電子書格式&#xff0c;打開就能讀&…