leetcode-爬樓梯(動態規划)


假設你正在爬樓梯。需要 n 階你才能到達樓頂。

每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?

注意:給定 n 是一個正整數。

示例 1:

輸入: 2
輸出: 2
解釋: 有兩種方法可以爬到樓頂。
1.  1 階 + 1 階
2.  2 階

示例 2:

輸入: 3
輸出: 3
解釋: 有三種方法可以爬到樓頂。
1.  1 階 + 1 階 + 1 階
2.  1 階 + 2 階
3.  2 階 + 1 階
思路:可以這樣想,n個台階,一開始可以爬 1 步,也可以爬 2 步,那么n個台階爬樓的爬樓方法就等於 一開始爬1步的方法數 + 一開始爬2步的方法數,這樣我們就只需要計算n-1個台階的方法數
和n-2個台階方法數,同理,計算n-1個台階的方法數只需要計算一下n-2個台階和n-3個台階,計算n-2個台階需要計算一下n-3個台階和n-4個台階……

 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM