LeetCode 熱題 100 118. 楊輝三角

LeetCode 熱題 100 | 118. 楊輝三角

大家好,今天我們來解決一道經典的算法題——楊輝三角。這道題在 LeetCode 上被標記為簡單難度,要求生成楊輝三角的前 numRows 行。楊輝三角是一個經典的組合數學問題,每一行的數字都是其正上方和正左上方的數字之和。下面我將詳細講解解題思路,并附上 Python 代碼實現。


問題描述

給定一個非負整數 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. 逐行生成

    • 每一行的第一個和最后一個數字都是 1
    • 中間的數字可以通過上一行的相鄰兩個數字相加得到。
  2. 動態規劃

    • 使用一個二維列表 triangle 來存儲楊輝三角的每一行。
    • 每一行的生成依賴于上一行的值。

Python代碼實現

def generate(numRows):# 初始化楊輝三角triangle = []for i in range(numRows):# 每一行的第一個和最后一個數字都是 1row = [1] * (i + 1)# 計算中間的數字for j in range(1, i):row[j] = triangle[i - 1][j - 1] + triangle[i - 1][j]# 將當前行加入楊輝三角triangle.append(row)return triangle# 測試示例
numRows1 = 5
numRows2 = 1result1 = generate(numRows1)
result2 = generate(numRows2)print(result1)  # 輸出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
print(result2)  # 輸出: [[1]]

代碼解析

  1. 初始化楊輝三角

    • 使用一個二維列表 triangle 來存儲每一行。
  2. 逐行生成

    • 每一行的第一個和最后一個數字都是 1
    • 中間的數字通過上一行的相鄰兩個數字相加得到。
  3. 動態規劃

    • 每一行的生成依賴于上一行的值,因此我們逐行構建楊輝三角。

復雜度分析

  • 時間復雜度:O(numRows2),其中 numRows 是楊輝三角的行數。我們需要逐行生成每一行的數字。
  • 空間復雜度:O(numRows2),用于存儲楊輝三角的每一行。

示例運行

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

總結

通過逐行生成的方法,我們可以高效地構建楊輝三角。這種方法直觀且易于實現,適合大多數場景。希望這篇題解對大家有所幫助,如果有任何問題,歡迎在評論區留言討論!

關注我,獲取更多算法題解和編程技巧!

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

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

相關文章

修改或禁用Cursor的全局搜索默認快捷鍵

在 Cursor 中&#xff0c;默認情況下 雙擊 Shift 會打開 全局搜索&#xff08;Quick Open&#xff09;&#xff0c;類似于 VS Code 的 CtrlP 功能。如果你想修改或禁用這個快捷鍵&#xff0c;可以按照以下步驟操作&#xff1a; 1. 打開快捷鍵設置 方法 1&#xff1a;按下 Ctrl…

HarmonyOS Device Connector(hdc)

它是為開發人員提供的用于調試的命令行工具&#xff0c;通過該工具可以在windows/linux/mac系統上與設備進行交互。 hdc分為三部分&#xff1a; client&#xff1a;運行在電腦端的進程&#xff0c;開發者在執行hdc命令時啟動該進程&#xff0c;命令結束后進程退出。 server&…

開源PDF解析工具Marker深度解析

開源PDF解析工具Marker深度解析 檢索增強生成&#xff08;RAG&#xff09;系統的第一步就是做 pdf 解析&#xff0c;從復雜多樣的 pdf 中提取出干凈準確的文本內容。現有的最優秀的開源工具有兩個&#xff1a;Marker 和 MinerU。因為 Marker 是個人開發者做的&#xff0c;文檔…

ARM子程序調用與返回

子程序&#xff08;也叫過程、函數、方法&#xff09;是一個能被調用和執行并返回到調用點那條指令的代碼 段。 兩個問題&#xff1a;如何將參數傳遞給子程序或從子程序中傳遞出來&#xff1f;怎么從子程序返回到調用點&#xff1f; 指令BSR Proc_A調用子程序Proc_A。 處理器將…

算力經濟模型推演:從中心化到去中心化算力市場的轉變(區塊鏈+智能合約的算力交易原型設計)

一、算力經濟的歷史脈絡與范式轉移 1.1 中心化算力市場的演進困境 傳統算力市場以超算中心、云計算平臺為核心載體&#xff0c;其運營模式呈現強中心化特征。中國移動構建的"四算融合"網絡雖實現百萬級服務器的智能調度&#xff0c;但動態資源分配仍受制于集中式控…

小結: 接口類型和路由優先級

網絡接口類型 1. Bridge-if&#xff08;橋接接口&#xff09; 作用&#xff1a;用于橋接網絡&#xff0c;將多個接口或VLAN連接為一個廣播域&#xff0c;實現二層數據轉發。 常用指令&#xff1a; interface bridge-if <number> bridge <bridge-id> # 將接口加入…

mysql一些事

一.聯合查詢/多表查詢 聯合查詢關鍵在于笛卡爾積的過程 笛卡爾坐標積的排列組合 首先它會將兩個表用排列組合的方式進行排列組合。 表一 表二 進行排列組合 我們發現它的行是 兩個表的行相乘&#xff0c;列是兩表的列相加。 我們所看到的數據有合理的也有不合理的我們接下…

【工具】Open WebUI:本地化部署的AI交互平臺

文章目錄 一、Open WebUI 簡介二、核心功能詳解1. 多模型與多模態支持2. 本地RAG與文檔集成3. 開發與定制化能力4. 安全與權限管理5. 用戶體驗優化 三、安裝與部署指南1. 快速安裝方式2. 高級配置3. 常見問題 四、實際應用場景1. 個人隱私助手2. 企業知識庫3. 學術研究4. 創意工…

AutoGPT

一、簡介 是一個基于openAI研發的GPT4模型的一個開源應用程序&#xff0c;根據用戶指定的目標&#xff0c;自動生成所需的提示&#xff0c;并且執行需要多個步驟才能完成的項目&#xff0c;整個過程不需要人類干預和指導&#xff08;無監督學習&#xff09;&#xff0c;生成式…

[C++] 小游戲 決戰蒼穹

大家好&#xff0c;各位看到這個標題&#xff0c;斗破蒼穹什么時候改叫決戰蒼穹了&#xff1f;其實&#xff0c;因為版權等一系列問題&#xff0c;斗破蒼穹正式改名為決戰蒼穹&#xff0c;這個版本主要更新內容為解決了皇冠競技場太過影響游戲平衡&#xff0c;并且提高了一些裝…

Spring的數據庫編程

本內容采用最新SpringBoot3框架版本,視頻觀看地址:B站視頻播放 1. JdbcTemplate概述 針對數據庫操作,Spring框架提供了JdbcTemplate類,JdbcTemplate是一個模板類,Spring JDBC中的更高層次的抽象類均在JdbcTemplate模板類的基礎上創建。 JdbcTemplate類提供了操作數據庫…

Debezium MySqlValueConverters詳解

Debezium MySqlValueConverters詳解 1. 類的作用與功能 1.1 核心作用 MySqlValueConverters是Debezium中負責MySQL數據類型轉換的核心類,主要功能包括: 數據類型映射:將MySQL的數據類型映射到Kafka Connect的Schema類型值轉換:將MySQL的原始值轉換為Kafka Connect可用的…

進程與線程:06 操作系統之“樹”

操作系統核心知識回顧與思維訓練 在之前的學習中&#xff0c;我們深入探討了CPU管理相關內容。 CPU管理內容回顧&#xff1a;我們學習了CPU直觀管理方法&#xff0c;了解如何讓簡單程序執行&#xff0c;分析了CPU效率低下的原因及處理辦法&#xff0c;即實現多程序執行。接著…

Android Studio Profiler

1.我們想要查看自己方法的調用鏈&#xff0c;或者分析方法耗時的情況&#xff0c;可以選擇Android Studio的Profiler&#xff0c;比較方便快捷。如下&#xff1a; 2.基本的面板參數講解&#xff1a; 3.可以通過搜索&#xff0c;查看對應的方法&#xff0c;以及方法的調用鏈…

33、VS中提示“以下文件中的行尾不一致。是否將行尾標準化?“是什么意思?

在Visual Studio&#xff08;VS&#xff09;中遇到提示“以下文件中的行尾不一致。是否將行尾標準化&#xff1f;”時&#xff0c;意味著當前打開或正在編輯的文件內部存在行尾符&#xff08;EOL&#xff0c;End-Of-Line&#xff09;格式不統一的情況。以下是詳細解釋和應對建議…

頭歌實驗 庫、表、數據的創建管理與備份遷移

第1關&#xff1a;創建db_ebank數據庫 drop database IF EXISTS db_ebank;/********** Begin **********/ create database db_ebank; /********** End **********/show databases; 第2關&#xff1a;創建數據表并設置約束 1.任務要求 在 db_ebank 數據庫中創建相應8個數據…

同城跑腿小程序幫取幫送接單搶單預約取件智能派單同城配送全開源運營版源碼優創

一、源碼描述 這是一套同城跑腿小程序&#xff0c;基于FastadminUniapp框架&#xff0c;全開源無加密&#xff0c;可私有化部署&#xff0c;包含用戶端、騎手端和運營端&#xff08;后端&#xff09;&#xff0c;支持幫取/幫送模式&#xff0c;支持一鍵接單/搶單&#xff0c;主…

利用無事務方式插入數據庫解決并發插入問題

一、背景 由于項目中同一個網元&#xff0c;可能會被多個不同用戶操作&#xff0c;而且操作大部分都是以異步子任務形式進行執行&#xff0c;這樣就會帶來并發寫數據問題&#xff0c;本文通過利用無事務方式插入數據庫解決并發插入問題&#xff0c;算是解決問題的一種思路&…

Nuxt3還能用嗎?

Nuxt3還能用嗎&#xff1f; 前一段時間&#xff0c;我完成了整個產品&#xff0c;從Nuxt到Next的遷移&#xff0c;因為面臨了一些在框架層面就無法解決的問題。 payload json化 在所有的的Nuxt中&#xff0c;我們都能看到有這樣一個東西。 其實有這個東西也很正常&#xff0…

Dify 獲取天氣數據并以echarts圖表顯示

Dify 獲取天氣數據并以echarts圖表顯示 1. 創建一個 Chatflow2. 創建一個 HTTP 請求節點3. 創建一個代碼執行節點4. 創建一個直接回復節點5. 發布并預覽 1. 創建一個 Chatflow 2. 創建一個 HTTP 請求節點 請求地址&#xff1a;https://weather.cma.cn/api/climate?stationid5…