DP(1) | Java | LeetCode 509, 70, 746 做題總結

509. 斐波那契數

https://leetcode.cn/problems/fibonacci-number/

  1. 確定dp數組(dp table)以及下標的含義 dp[i] 第i個斐波那契數值為dp[i]
  2. 確定遞推公式 題目說了 F(n) = F(n - 1) + F(n - 2)
  3. dp數組如何初始化 題目說了 F(0) = 0,F(1) = 1
  4. 確定遍歷順序 從前向后遍歷
  5. 舉例推導dp數組
  6. 打印 dp 數組
  • 我的答案
class Solution {public int fib(int n) {if(n==0) return 0;if(n==1) return 1;return fib(n-1)+fib(n-2);}
}
  • 非遞歸
class Solution {public int fib(int n) {if (n <= 1) return n;             int[] dp = new int[n + 1];dp[0] = 0;dp[1] = 1;for (int index = 2; index <= n; index++){dp[index] = dp[index - 1] + dp[index - 2];}return dp[n];}
}

70. 爬樓梯

啊 沒思路

如果總共1階,有1種方法
如果總共2階,有2種方法

如果總共3階,他只可能是從1階或者2階上來的,1種+2種=3種方法。3階的前一個狀態只可能是2階或者1階段(一次走一步或者兩步),所以從初始到前一個階段共有3種方法。

如果總共4階,4階的前一個狀態只可能是2階或者3階段(一次走一步或者兩步),所以從初始狀態到上一階段,有2+3=5種

  • 思考過程
    (1) 確定dp數組(dp table)以及下標的含義:達到第i階有 dp[i]種方法
    (2) 確定遞推公式 dp[i] = dp[i-1]+dp[i-2]
    (3) dp數組如何初始化 dp[1] = 1 ; dp[2] = 2
    (4) 確定遍歷順序 從前到后
    (5) 舉例推導dp數組
    (6) 打印 dp 數組

  • AC

class Solution {public int climbStairs(int n) {if(n==1) return 1;if(n==2) return 2;int[]dp = new int[n+1];dp[1] = 1;dp[2] = 2;for(int i=3; i<=n; i++) {dp[i] = dp[i-1] + dp[i-2];}return dp[n];}
}

746. 使用最小花費爬樓梯

分析:
站在 0的位置,不花費錢,但是往上跳就要花費,【往上跳才需要花費】
頂樓的位置:數組長度+1

  • 思考過程

(1) 確定dp數組(dp table)以及下標的含義:達到第i階,需要的花費為dp[i]
(2) 確定遞推公式 跳到dp[i]的前一個狀態有兩種 (1) dp[i-1],(2) dp[i-2] ;
dp[i] = Math.min(dp[i-1] + cost[i-1] , dp[i-2] + cost[i-2])

(3) dp數組如何初始化 dp[0] = 0 ; dp[1] = 0
(4) 確定遍歷順序 從前到后
(5) 舉例推導dp數組
(6) 打印 dp 數組

  • AC
class Solution {public int minCostClimbingStairs(int[] cost) {int top = cost.length;int[]dp = new int[top+1];dp[0]=dp[1]=0;for(int i=2; i<=top; i++) {dp[i] = Math.min(dp[i-1]+cost[i-1], dp[i-2]+cost[i-2]);}return dp[top];}
}

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

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

相關文章

15. Revit API: Transaction(事務)與 Failures(故障處理)

前言 UI講完&#xff0c;回到DB這塊兒。在Document那篇&#xff0c;提到增刪改查操作都是在Document上&#xff0c;是對Documet進行操作。 看到“增刪改查”這四個&#xff0c;想到什么了沒有&#xff1f; 數據庫&#xff08;DB&#xff09;嘛~話說那本經典的紅皮數據庫的書叫…

網絡安全----防御----防火墻安全策略組網

防火墻組網 要求&#xff1a; 1&#xff0c;DMz區內的服務器&#xff0c;辦公區僅能在辦公時間內(9:00-18:00)可以訪問&#xff0c;生產區的設備全天可以訪問。 2&#xff0c;生產區不允許訪問互聯網&#xff0c;辦公區和游客區允許訪問互聯網 3&#xff0c;辦公區設備10.0.…

計算機網絡之廣域網

廣域網特點: 主要提供面向通信的服務&#xff0c;支持用戶使用計算機進行遠距離的信息交換。 覆蓋范圍廣,通信的距離遠&#xff0c;需要考慮的因素增多&#xff0c; 線路的冗余、媒體帶寬的利用和差錯處理問題。 由電信部門或公司負責組建、管理和維護&#xff0c;并向全社會…

友思特方案 | 低延遲GigE Vision解決方案:用于紅外設備、醫療和工業級探測面板

導讀 維持實時視頻系統軟硬件的長期成本效益&#xff0c;是該系統在醫療、工業等領域廣泛應用的前提。友思特低延遲GigE Vision解決方案創新性地突破了這一難題&#xff0c;提供高帶寬且高可靠性的端到端網絡鏈接&#xff0c;有效降低了開發成本、復雜性和時間。 引言 雖然實…

DDoS攻擊詳解

DDoS 攻擊&#xff0c;其本質是通過操控大量的傀儡主機或者被其掌控的網絡設備&#xff0c;向目標系統如潮水般地發送海量的請求或數據。這種行為的目的在于竭盡全力地耗盡目標系統的網絡帶寬、系統資源以及服務能力&#xff0c;從而致使目標系統無法正常地為合法用戶提供其所應…

leetcode--從前序與中序遍歷序列構造二叉樹

leetcode地址&#xff1a;從前序與中序遍歷序列構造二叉樹 給定兩個整數數組 preorder 和 inorder &#xff0c;其中 preorder 是二叉樹的先序遍歷&#xff0c; inorder 是同一棵樹的中序遍歷&#xff0c;請構造二叉樹并返回其根節點。 示例 1: 輸入: preorder [3,9,20,15,…

vue學習day05-watch偵聽器(監視器)、Vue生命周期和生命周期的四個階段、、工程化開發和腳手架Vue cli

13、watch偵聽器&#xff08;監視器&#xff09; &#xff08;1&#xff09;作用&#xff1a;監視數據變化&#xff0c;執行一些業務邏輯或異步操作 &#xff08;2&#xff09;語法&#xff1a; 1&#xff09;簡寫語法——簡單數據類型&#xff0c;直接監視 ① Watch:{ 數…

[Flink]二、Flink1.13

7. 處理函數 之前所介紹的流處理 API,無論是基本的轉換、聚合,還是更為復雜的窗口操作,其實都是基于 DataStream 進行轉換的;所以可以統稱為 DataStream API ,這也是 Flink 編程的核心。而我們知道,為了讓代碼有更強大的表現力和易用性, Flink 本身提供了多…

一文入門【NestJs】Controllers 控制器

Nest學習系列 ??一文帶你入門【NestJS】 ??前言 流程圖 Controllers 控制器主要負責處理傳入請求&#xff0c;并向客戶端返回響應&#xff0c;控制器可以通過路由機制來控制接收那些請求&#xff0c;通常一個Controllers種會有多個匹配路由&#xff0c;不同的路由可以知…

Spring源碼二十一:Bean實例化流程四

上一篇Spring源碼二十&#xff1a;Bean實例化流程三中&#xff0c;我們主要討論了單例Bean創建對象的主要方法getSingleton的內部方法createBean&#xff0c;createBean方法中的resolveBeanClase方法與prepareMethodOverrides方法處理了lookup-method屬性與repliace-method配置…

MT3046 憤怒的象棚

思路&#xff1a; a[]存憤怒值&#xff1b;b[i]存以i結尾的&#xff0c;窗口里的最大值&#xff1b;c[i]存以i結尾的&#xff0c;窗口里面包含?的最大值。 &#xff08;?為新大象的位置&#xff09; 例&#xff1a;1 2 3 4 ? 5 6 7 8 9 則ans的計算公式b3b4c4c5c6b7b8b9…

三代測序結構變異分析 - 單樣本Germline SV calling和多樣本SV Calling

適用于三代PacBio HiFi / ONT 長reads數據的結構變異分析。 1. sniffles2安裝 sniffles2需要Python >= 3.10環境,因此用conda創建安裝好3.10的環境。 sniffles2安裝要求: Python >= 3.10pysam >= 0.21.0edlib >=1.3.9psutil>=5.9.4# 創建conda環境 conda c…

【記錄】LaTex|LaTex 代碼片段 Listings 添加帶圓圈數字標號的箭頭(又名 LaTex Tikz 庫畫箭頭的簡要介紹)

文章目錄 前言注意事項1 Tikz 的調用方法&#xff1a;newcommand2 標號圓圈數字的添加方式&#xff1a;\large{\textcircled{\small{1}}}\normalsize3 快速掌握 Tikz 箭頭寫法&#xff1a;插入點相對位移標號node3.1 第一張圖&#xff1a;插入點相對位移3.2 第二張圖&#xff1…

【MindSpore學習打卡】應用實踐-LLM原理和實踐-基于MindSpore實現BERT對話情緒識別

在當今的自然語言處理&#xff08;NLP&#xff09;領域&#xff0c;情緒識別是一個非常重要的應用場景。無論是在智能客服、社交媒體分析&#xff0c;還是在情感計算領域&#xff0c;準確地識別用戶的情緒都能夠極大地提升用戶體驗和系統的智能化水平。BERT&#xff08;Bidirec…

imx6ull/linux應用編程學習(12)CAN應用編程基礎

關于裸機的can通信&#xff0c;會在其他文章發&#xff0c;這里主要講講linux上的can通信。 與I2C,SPI等同步通訊方式不同&#xff0c;CAN通訊是異步通訊&#xff0c;也就是沒有時鐘信號線來保持信號接收同步&#xff0c;也就是所說的半雙工&#xff0c;無法同時發送與接收&…

【Java 注解,自定義注解,元注解,注解本質,注解解析】

文章目錄 什么是注解&#xff1f;Java內置注解自定義注解元注解注解的本質注解解析 什么是注解&#xff1f; 注解是Java編程語言中的一種元數據&#xff0c;提供了有關程序的額外信息。注解以符號開始&#xff0c;緊跟著注解的名稱和一對括號&#xff0c;括號內包含注解的參數…

C++基礎篇(1)

目錄 前言 1.第一個C程序 2.命名空間 2.1概念理解 2.2namespace 的價值 2.3 namespace的定義 3.命名空間的使用 4.C的輸入輸出 結束語 前言 本節我們將正式進入C基礎的學習&#xff0c;話不多說&#xff0c;直接上貨&#xff01;&#xff01;&#xff01; 1.第一個C程…

【Linux進階】文件系統8——硬鏈接和符號連接:ln

在Linux下面的鏈接文件有兩種&#xff0c; 一種是類似Windows的快捷方式功能的文件&#xff0c;可以讓你快速地鏈接到目標文件&#xff08;或目錄)&#xff1b;另一種則是通過文件系統的inode 鏈接來產生新文件名&#xff0c;而不是產生新文件&#xff0c;這種稱為硬鏈接&…

base SAS programming學習筆記10(combine data)

1.一對一合并 基本格式如下&#xff1a; data output-data-set; set data-set1; set data-set2;(data-set1和data-set2可以是相同的數據集&#xff0c;可以添加多個set 語句來實現上述的一對一合并) run; 輸出數據集結果如下&#xff1a; a.會包含所有輸入數據的變量名&#x…

小米手機永久刪除的照片怎么找回?這兩個方法千萬不要錯過!

小米手機永久刪除的照片怎么找回&#xff1f;身為米粉發燒黨的小編又雙叒叕手殘了&#xff01;本來想在手機回收站中恢復一張照片&#xff0c;結果一個稀里糊涂就把照片點成了“永久刪除”。于是乎難得的休班假期&#xff0c;就變成了小編恢復永久刪除照片的漫漫之路。以下是小…