程式碼隨想錄演算法訓練營 | 動態規劃,509. 斐波那契數,70. 爬樓梯, 746. 使用最小花費爬樓梯

漪欢酒發表於2024-10-07

動態規劃:1.動態規劃中每一個狀態一定是由上一個狀態推匯出來的 2.確定dp陣列(dp table)以及下標的含義,確定遞推公式dp,陣列如何初始化,確定遍歷順序,舉例推導dp陣列;3.Debug:dp陣列列印

509. 斐波那契數
題目連結:509. 斐波那契數
文件講解︰程式碼隨想錄(programmercarl.com)
影片講解︰斐波那契數
日期:2024-10-07

想法:初識5步曲。
Java程式碼如下:

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 i = 2; i <= n; i++){
            dp[i] = dp[i - 1] + dp[i - 2];
        }
        return dp[n];
    }
}

70. 爬樓梯
題目連結:70. 爬樓梯
文件講解︰程式碼隨想錄(programmercarl.com)
影片講解︰爬樓梯
日期:2024-10-07

想法:第i層,等於i-1的方法 + i-2的方法,dp[1] = 1; dp[2] = 2
Java程式碼如下:

class Solution {
    public int climbStairs(int n) {   
        if (n <= 1) return n;
        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. 使用最小花費爬樓梯
題目連結:746. 使用最小花費爬樓梯
文件講解︰程式碼隨想錄(programmercarl.com)
影片講解︰使用最小花費爬樓梯
日期:2024-10-07

Java程式碼如下:

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

相關文章