代碼隨想錄算法訓練營第三十二天 | 509.斐波那契數 70.爬樓梯 746.使用最小花費爬樓梯

509. 斐波那契數

題目鏈接:509. 斐波那契數 - 力扣(LeetCode)

文章講解:代碼隨想錄

視頻講解:手把手帶你入門動態規劃 | LeetCode:509.斐波那契數_嗶哩嗶哩_bilibili

思路:輸入:2??輸出:1??解釋:F(2) = F(1) + F(0) = 1 + 0 = 1

動規五部曲:

1.確定dp數組以及下標的含義

dp[i]的定義為:第i個數的斐波那契數值是dp[i]

2.確定遞推公式

dp[i] = dp[i - 1] + dp[i - 2];

3.dp數組初始化

dp[0] = 0;??dp[1] = 1;

4.確定遍歷順序

dp[i]是依賴 dp[i - 1] 和 dp[i - 2],遍歷的順序一定是從前到后遍歷的

5.舉例推導dp數組

按照遞推公式dp[i] = dp[i - 1] + dp[i - 2],當N=10時:0 1 1 2 3 5 8 13 21 34 55

如果代碼結果不對,就把dp數組打印出來看看和推導的數列是不是一致的

時間復雜度:O(n)???空間復雜度:O(n)

70. 爬樓梯

題目鏈接:???????70. 爬樓梯 - 力扣(LeetCode)

文章講解:???????代碼隨想錄

視頻講解:帶你學透動態規劃-爬樓梯(對應力扣70.爬樓梯)| 動態規劃經典入門題目_嗶哩嗶哩_bilibili

思路:輸入:n = 3?????輸出:3

解釋:有三種方法可以爬到樓頂。1 階 + 1 階 + 1 階,1 階 + 2 階,2 階 + 1 階

定義一個一維數組來記錄不同樓層的狀態

1.確定dp數組以及下標的含義

dp[i]: 爬到第i層樓梯,有dp[i]種方法

2.確定遞推公式

dp[i] 可以有兩個方向推出來:一個是dp[i-1]再往上走一個臺階,一個是dp[i-2]再往上走2個臺階。dp[i - 1],上i-1層樓梯,有dp[i - 1]種方法,還有就是dp[i - 2],上i-2層樓梯,有dp[i - 2]種方法,dp[i]是兩種方法之和,所以dp[i] = dp[i - 1] + dp[i - 2]

3.dp數組初始化

dp[1] = 1,dp[2] = 2,然后從i = 3開始遞推

4.確定遍歷順序

從遞推公式dp[i] = dp[i - 1] + dp[i - 2];中可以看出,遍歷順序一定是從前向后遍歷的

5.舉例推導dp數組

舉例當n為5的時候,dp table(dp數組)應該是:1 2 3 5 8,如果代碼出問題了,就把dp table 打印出來

時間復雜度:O(n)?????空間復雜度:O(n)

746. 使用最小花費爬樓梯

題目鏈接:746. 使用最小花費爬樓梯 - 力扣(LeetCode)

文章講解:???????代碼隨想錄

視頻講解:動態規劃開更了!| LeetCode:746. 使用最小花費爬樓梯_嗶哩嗶哩_bilibili

思路:

輸入:cost = [10, 15, 20]????輸出:15???解釋:最低花費是從 cost[1] 開始,然后走兩步即可到階梯頂,一共花費 15

使用動態規劃,就要有一個數組來記錄狀態,本題只需要一個一維數組dp[i]就可以了

1.確定dp數組以及下標的含義

dp[i]的定義:到達第i臺階所花費的最少體力為dp[i]。

2.確定遞推公式

可以有兩個途徑得到dp[i],一個是dp[i-1] 一個是dp[i-2]。cost[i] 是從樓梯第 i 個臺階向上爬需要支付的費用

dp[i - 1] 跳到 dp[i] 需要花費 dp[i - 1] + cost[i - 1],dp[i - 2] 跳到 dp[i] 需要花費 dp[i - 2] + cost[i - 2]。

選從dp[i - 1]跳還是從dp[i - 2]跳?一定是選最小的,所以dp[i] = min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]);

3.dp數組初始化

dp[0] = 0,dp[1] = 0;

4.確定遍歷順序

從前到后遍歷cost數組

5.舉例推導dp數組

示例2:cost = [1, 100, 1, 1, 1, 100, 1, 1, 100, 1] ,來模擬一下dp數組的狀態變化,如下:0 0 1 2 2 3 3 4 4 5 6

時間復雜度:O(n)??????空間復雜度:O(n)

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

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

相關文章

拼多多 anti-token unidbg 分析

聲明: 本文章中所有內容僅供學習交流使用,不用于其他任何目的,抓包內容、敏感網址、數據接口等均已做脫敏處理,嚴禁用于商業用途和非法用途,否則由此產生的一切后果均與作者無關! 逆向分析 版本7.3-7.4 都試過加密沒什…

【工具】BioPred一個用于精準醫療中生物標志物分析的 R 軟件包

介紹 R 語言包 BioPred 提供了一系列用于精準醫療中的亞組分析和生物標志物分析的工具。它借助極端梯度提升(XGBoost)算法,并結合傾向得分加權和 A 學習方法,幫助優化個體化治療規則,從而簡化亞組識別過程。BioPred 還…

橫掃SQL面試——時間序列分組與合并(會話劃分)問題

橫掃SQL面試題 📌 時間序列分組與合并問題 📚 橫掃SQL面試——時間序列分組與合并解析 🌟 核心問題類型 時間序列分組(Sessionization) 處理具有時間維度的連續數據流,根據特定規則(如時間間隔…

PCB鉆孔之多邊形孔分析

問題分析 在鉆孔過程中,鉆頭的運動可以分為兩部分: 公轉:鉆頭的軸線繞理想軸線(鉆孔中心線)做圓周運動。自轉:鉆頭繞自身軸線做旋轉運動。 由于公轉和自轉的疊加,鉆尖的運動軌跡會形成復雜的…

Android源碼之App啟動

目錄 App啟動概述 App啟動過程 App啟動過程圖 源碼概述 跨進程啟動 進程內啟動 下面以應用桌面Launcher啟動App的MainActivity來舉例: App啟動概述 首先,MainActivity是由Launcher組件來啟動的,而Launcher又是通過Activity管理服務Act…

指紋瀏覽器技術解析:如何實現多賬號安全運營與隱私保護

瀏覽器指紋的挑戰與需求 在數字化運營場景中,瀏覽器指紋技術被廣泛用于追蹤用戶行為。通過采集設備硬件參數(如屏幕分辨率、操作系統)、軟件配置(如字體、插件)及網絡特征(如IP地址、時區)&…

生活電子常識——cmd不能使用anaconda的python環境,導致輸入python打開應用商店

前言 電腦已經安裝了anaconda,從自帶的Anaconda Prompt (Anaconda3)中是可以識別python環境的,然而切換到cmd時,突然發現cmd中無法識別anaconda的python環境,竟然打開了應用商店讓我安裝Python,這當然是不對的。 解決 這是因為…

搭建前端環境和后端環境

搭建前端環境 ①、安裝vscode,并安裝相應的插件工具 ②、安裝node.js,可以選擇當前版本,或者其他版本 ③、創建工作區 創建一個空文件夾,然后通過vscode工具打開,保存為后綴名為.code-workspace ④、從gitee…

Java基礎知識總結(1.8)——Java 注解(持續更新)

更新時間:2025-03-31 Web后端專欄:CSDN專欄——理論-Web后端技術博客總目錄:計算機技術系列博客——目錄頁 8.1 注解的概念 8.1.1 定義與作用 Java注解(Annotation)是Java語言自JDK1.5版本引入的核心特性&#xff0…

線程概念與控制(下)

線程概念與控制(中)https://blog.csdn.net/Small_entreprene/article/details/146539064?sharetypeblogdetail&sharerId146539064&sharereferPC&sharesourceSmall_entreprene&sharefrommp_from_link對于之前學習的內容,我們…

SQL注入之盲注技術詳解

SQL注入之盲注技術詳解 一、盲注基本概念盲注特點: 二、盲注主要類型1. 布爾盲注判斷依據: 2. 時間盲注判斷依據: 三、布爾盲注詳細技術1. 識別布爾盲注2. 數據提取技術(1) 判斷數據庫類型(2) 獲取數據庫名長度(3) 逐字符獲取數據庫名(4) 獲取…

OpenCV 圖形API(3)高層次設計概覽

操作系統:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 編程語言:C11 描述 G-API 是一個異構框架,提供了統一的 API 來使用多個支持的后端編程圖像處理流水線。 關鍵的設計理念是在指定使用哪些內核和設備時保持流…

阿里云Tair KVCache:打造以緩存為中心的大模型Token超級工廠

一、Tair KVCache 簡介 Tair KVCache 是阿里云瑤池旗下云數據庫 Tair 面向大語言模型推理場景推出的 KVCache 緩存加速服務。 隨著互聯網技術的演進與流量規模的激增,緩存技術逐漸成為系統架構的核心組件。該階段催生了 Redis 等開源緩存數據庫,阿里巴巴…

Open GL ES ->GLSurfaceView正交投影與透視投影方法中近遠平面取值參考

坐標系 OpenGL ES使用右手坐標系&#xff0c;相機默認朝向負z方向 相機位置|vz軸<----- 0 -----> -near -----> -far -----不可見 可見區域 不可見裁剪規則 只有z值在[-near, -far]范圍內的物體可見&#xff0c; 當z > -near&#xff08;在近平面前&#…

iOS自定義collection view的page size(width/height)分頁效果

前言 想必大家工作中或多或少會遇到下圖樣式的UI需求吧 像這種cell長度不固定&#xff0c;并且還能實現的分頁效果UI還是很常見的 實現 我們這里實現主要采用collection view&#xff0c;實現的方式是自定義一個UICollectionViewFlowLayout的子類&#xff0c;在這個類里對…

Java高頻面試之并發編程-01

hello啊&#xff0c;各位觀眾姥爺們&#xff01;&#xff01;&#xff01;本baby今天來報道了&#xff01;哈哈哈哈哈嗝&#x1f436; 面試官&#xff1a;并行跟并發有什么區別&#xff1f; 并發 vs 并行&#xff1a;核心區別與場景 1. 定義對比 維度并發&#xff08;Concu…

從零開始學Rust:所有權(Ownership)機制精要

文章目錄 第四章&#xff1a;Ownership 所有權核心概念關鍵機制引用與借用&#xff08;Reference & Borrowing&#xff09;懸垂引用問題錯誤示例分析解決方案引用安全規則 切片&#xff08;Slice&#xff09;內存安全保證 第四章&#xff1a;Ownership 所有權 Ownership i…

一旦懂得,有趣得緊1:詞根tempt-(嘗試)的兩種解法

詞根tempt-嘗試 tempt vt.引誘&#xff1b;誘惑&#xff1b;慫恿&#xff1b;利誘&#xff1b;勸誘&#xff1b;鼓動 temptation n.引誘&#xff1b;誘惑 // tempt v.引誘 -ation 名詞后綴 attempt v.&n.嘗試&#xff0c;試圖 // at- 加強 tempt 嘗試contempt n.蔑視&am…

召喚數學精靈

1.召喚數學精靈 - 藍橋云課 問題描述 數學家們發現了兩種用于召喚強大的數學精靈的儀式&#xff0c;這兩種儀式分別被稱為累加法儀式 A(n) 和累乘法儀式 B(n)。 累加法儀式 A(n) 是將從1到 n 的所有數字進行累加求和&#xff0c;即&#xff1a; A(n)12?n 累乘法儀式 B(n) …

C語言實現查表8位SAE J1850 CRC

背景&#xff1a; 在做霍爾采集電流的時候&#xff0c;CSSV1500N 系列電流傳感器通過can數據輸出的報文需要做crc校驗&#xff0c;嵌入式常用查表的方式&#xff0c;所以就問了下deepseek怎么算這個CRC. 以下是使用 查表法&#xff08;Lookup Table&#xff09; 在C語言中高效…