国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

3-【斐波那契數(shù)列模型】LeetCode面試題08.01-三步問(wèn)題

這篇具有很好參考價(jià)值的文章主要介紹了3-【斐波那契數(shù)列模型】LeetCode面試題08.01-三步問(wèn)題。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

題目

三步問(wèn)題。有個(gè)小孩正在上樓梯,樓梯有n階臺(tái)階,小孩一次可以上1階、2階或3階。實(shí)現(xiàn)一種方法,計(jì)算小孩有多少種上樓梯的方式。結(jié)果可能很大,你需要對(duì)結(jié)果模1000000007。

示例1:

輸入:n = 3?
輸出:4
說(shuō)明: 有四種走法

示例2:

輸入:n = 5
輸出:13

提示:n范圍在[1, 1000000]之間


思路

  • 到0階臺(tái)階的方式:(地平線)
  • 到1階臺(tái)階的方式:1種(0->1)
  • 到2階臺(tái)階的方式:2種(0->2、到1階臺(tái)階的方式1種(0->1->2))
  • 到3階臺(tái)階的方式:4種(0->3、到1階臺(tái)階的方式1種、到2階臺(tái)階的方式2種)
  • 到4階臺(tái)階的方式:7種(到1階臺(tái)階的方式1種、到2階臺(tái)階的方式2種、到3階臺(tái)階的方式4種)
  • 到5階臺(tái)階的方式:13種
  • ......

step1:狀態(tài)表示

經(jīng)驗(yàn)(以某一個(gè)位置為起點(diǎn)或結(jié)尾)+題目要求(做替換即可):

dp[i]表示:到達(dá)i位置時(shí),一共有多少種方式。

step2:狀態(tài)轉(zhuǎn)移方程

以i位置的最近一次位置來(lái)劃分問(wèn)題——dp[i]有3種情況:

  1. 從i - 3位置跳3步一次性到達(dá)i位置。到i - 3位置有dp[i - 3]種方式,后面再加一步到i位置,則到i位置有dp[i - 3]種方式。
  2. 從i - 2位置跳2步一次性到達(dá)i位置。同理:則到i位置有dp[i - 2]種方式。
  3. 從i - 1位置跳1步一次性到達(dá)i位置。同理:則到i位置有dp[i - 1]種方式。

得狀態(tài)轉(zhuǎn)移方程為:dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3]。

step3:初始化

令dp[1] = 1、dp[2] = 2、dp[3] = 4,這樣就不會(huì)越界。

step4:填表順序

從左往右。

step5:返回值

返回dp[n]。


代碼文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-454963.html

class Solution {
    public int waysToStep(int n) {
        int MOD = (int)1e9 + 7;

        //處理邊界條件
        if(n == 1 || n == 2) {
            return n;
        }
        if(n == 3) {
            return 4;
        }

        //1.創(chuàng)建 dp 表
        int[] dp = new int[n + 1]; //要訪問(wèn)到 n 的位置,所以 dp 表規(guī)模要是 n + 1 大小

        //2.初始化
        dp[1] = 1;
        dp[2] = 2;
        dp[3] = 4;

        //3.填表
        for(int i = 4; i <= n; i++) {
            dp[i] = ((dp[i - 1] + dp[i - 2]) % MOD + dp[i - 3]) % MOD;
        }
        
        //4.返回值
        return dp[n];
    }
}

到了這里,關(guān)于3-【斐波那契數(shù)列模型】LeetCode面試題08.01-三步問(wèn)題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【算法優(yōu)選】 動(dòng)態(tài)規(guī)劃之斐波那契數(shù)列模型

    動(dòng)態(tài)規(guī)劃相關(guān)題目都可以參考以下五個(gè)步驟進(jìn)行解答: 狀態(tài)表? 狀態(tài)轉(zhuǎn)移?程 初始化 填表順序 返回值 后面題的解答思路也將按照這五個(gè)步驟進(jìn)行講解。 泰波那契序列 Tn 定義如下: T0 = 0, T1 = 1, T2 = 1, 且在 n = 0 的條件下 Tn+3 = Tn + Tn+1 + Tn+2 給你整數(shù) n,請(qǐng)返回第 n 個(gè)泰波那契

    2024年02月05日
    瀏覽(25)
  • 【動(dòng)態(tài)規(guī)劃專欄】專題一:斐波那契數(shù)列模型--------1.第N個(gè)泰波那契數(shù)

    【動(dòng)態(tài)規(guī)劃專欄】專題一:斐波那契數(shù)列模型--------1.第N個(gè)泰波那契數(shù)

    本專欄內(nèi)容為:算法學(xué)習(xí)專欄,分為優(yōu)選算法專欄,貪心算法專欄,動(dòng)態(tài)規(guī)劃專欄以及遞歸,搜索與回溯算法專欄四部分。 通過(guò)本專欄的深入學(xué)習(xí),你可以了解并掌握算法。 ??博主csdn個(gè)人主頁(yè):小小unicorn ?專欄分類:動(dòng)態(tài)規(guī)劃專欄 ??代碼倉(cāng)庫(kù):小小unicorn的代碼倉(cāng)庫(kù)??

    2024年02月21日
    瀏覽(23)
  • (動(dòng)態(tài)規(guī)劃) 劍指 Offer 10- I. 斐波那契數(shù)列 ——【Leetcode每日一題】

    (動(dòng)態(tài)規(guī)劃) 劍指 Offer 10- I. 斐波那契數(shù)列 ——【Leetcode每日一題】

    難度:簡(jiǎn)單 寫一個(gè)函數(shù),輸入 n ,求斐波那契(Fibonacci)數(shù)列的第 n 項(xiàng)(即 F(N) )。斐波那契數(shù)列的定義如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N 1. 斐波那契數(shù)列由 0 和 1 開(kāi)始,之后的斐波那契數(shù)就是由之前的兩數(shù)相加而得出。 答案需要取模 1e9+7(1000000007),如計(jì)

    2024年02月12日
    瀏覽(20)
  • 動(dòng)態(tài)規(guī)劃入門:斐波那契數(shù)列模型以及多狀態(tài)(C++)

    動(dòng)態(tài)規(guī)劃入門:斐波那契數(shù)列模型以及多狀態(tài)(C++)

    ????動(dòng)態(tài)規(guī)劃(Dynamic programming,簡(jiǎn)稱 DP)是一種解決多階段決策問(wèn)題的算法思想。它將問(wèn)題分解為多個(gè)階段,并通過(guò)保存中間結(jié)果來(lái)避免重復(fù)計(jì)算,從而提高效率。 動(dòng)態(tài)規(guī)劃的解題步驟一般分為以下幾步: 思考狀態(tài)表示,創(chuàng)建dp表(重點(diǎn)) 分析出狀態(tài)轉(zhuǎn)移方程(重點(diǎn)) 初始化 確定

    2024年02月11日
    瀏覽(25)
  • Java【動(dòng)態(tài)規(guī)劃】斐波那契數(shù)列模型, 圖文思路詳解 + 代碼實(shí)現(xiàn)

    Java【動(dòng)態(tài)規(guī)劃】斐波那契數(shù)列模型, 圖文思路詳解 + 代碼實(shí)現(xiàn)

    本篇總結(jié)動(dòng)態(tài)規(guī)劃中的 斐波那契數(shù)列模型 的解法和思路 按照以下流程進(jìn)行分析題目和代碼編寫 思路分析步驟 代碼編寫步驟 1, 狀態(tài)表示 1, 構(gòu)造 dp 表 2, 狀態(tài)轉(zhuǎn)移方程 2, 初始化+邊界處理 3, 初始化 3, 填表(抄狀態(tài)轉(zhuǎn)移方程) 4, 填表順序 4, 返回結(jié)果 5, 返回值 / OJ鏈接 題目分析

    2024年02月08日
    瀏覽(21)
  • 【動(dòng)態(tài)規(guī)劃專欄】專題一:斐波那契數(shù)列模型--------2.三步問(wèn)題

    【動(dòng)態(tài)規(guī)劃專欄】專題一:斐波那契數(shù)列模型--------2.三步問(wèn)題

    本專欄內(nèi)容為:算法學(xué)習(xí)專欄,分為優(yōu)選算法專欄,貪心算法專欄,動(dòng)態(tài)規(guī)劃專欄以及遞歸,搜索與回溯算法專欄四部分。 通過(guò)本專欄的深入學(xué)習(xí),你可以了解并掌握算法。 ??博主csdn個(gè)人主頁(yè):小小unicorn ?專欄分類:動(dòng)態(tài)規(guī)劃專欄 ??代碼倉(cāng)庫(kù):小小unicorn的代碼倉(cāng)庫(kù)??

    2024年02月21日
    瀏覽(27)
  • Python斐波那契數(shù)列

    斐波那契數(shù)列是一個(gè)經(jīng)典的數(shù)學(xué)問(wèn)題,在 Python 中可以使用多種方法來(lái)實(shí)現(xiàn),下面是幾個(gè)常見(jiàn)的實(shí)現(xiàn)方式: 1. 使用遞歸 ```python def fibonacci_recursive(n): ? ? if n = 1: ? ? ? ? return n ? ? else: ? ? ? ? return fibonacci_recursive(n-1) + fibonacci_recursive(n-2) ``` 2. 使用循環(huán) ```python def fibonacci_i

    2024年02月02日
    瀏覽(22)
  • JAVA-斐波那契數(shù)列

    輸入一個(gè)整數(shù) n ,求斐波那契數(shù)列的第 n 項(xiàng)。 假定從 0 開(kāi)始,第 0 項(xiàng)為 0 。 數(shù)據(jù)范圍 0≤n≤39 樣例

    2024年02月10日
    瀏覽(23)
  • 斐波那契數(shù)列應(yīng)用2

    目錄 斐波那契數(shù)列應(yīng)用2 程序設(shè)計(jì) 程序分析? 系列文章 【問(wèn)題描述】定義如下序列:f(1)=1,f(2)=1;f(n)=(A*f(n-1)+B*f(n-2))mod7? ? ?給定A和B,請(qǐng)你計(jì)算f(n)的值。 【輸

    2023年04月10日
    瀏覽(23)
  • c 斐波那契數(shù)列輸出

    在C語(yǔ)言中,我們可以通過(guò)遞歸或循環(huán)的方法來(lái)實(shí)現(xiàn)斐波那契數(shù)列的輸出。首先,我們需要明白斐波那契數(shù)列的定義:任一項(xiàng)數(shù)字是前兩項(xiàng)的和(最開(kāi)始兩項(xiàng)均定義為1)。下面是具體的實(shí)現(xiàn)方式。 使用遞歸方法: #include stdio.h int main() { ? ? int m = 0, n = 1, sum; ? ? printf(\\\"請(qǐng)輸入

    2024年02月06日
    瀏覽(21)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包