LeetCode刷題:爬樓梯

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

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

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

示例 1:

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

示例 2:

輸入: 3
輸出: 3
解釋: 有三種方法可以爬到樓頂。
1.  1+ 1+ 12.  1+ 23.  2+ 1

題解:
這道題第一想法是用遞歸解決,但是實際運行之後發現45的時候超時。最後採用非遞歸方法解決。
時間和內存消耗爲:
在這裏插入圖片描述
代碼爲:

		class Solution {
    public int climbStairs(int n) {
        if(n<3){
            return n;
        }
        int a1=1;
        int a2=2;
        for(int i=3;i<=n;i++){
            int temp=a1+a2;
            a1=a2;
            a2=temp;
        }
        return a2;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章