天天看點

LeetCode 爬樓梯(Climbing Stairs)

題目

假設你正在爬樓梯。需要 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 步

思路

比較明晰的就是後一個數是相近的前兩個數之和,那麼可用遞歸的方法來做,然而因為遞歸有着額外函數調用的開銷,這種方式不推崇。那麼就是循環來解決。

public int climbStairs(int n) {     
         int N1=;
         int N2=;
         if(n==){
             return ;
         }
         if(n==){
             return ;
         }
         while(n>=){
            int temp  =N2;
            N2=N1+N2;
            N1=temp;
            n--;
         }
         return N2;
        }