[LeetCode]problem 70. Climbing Stairs

link

TAG

動態規劃

類-斐波拉切

方法

之前寫算法作業時做過,所以現在看起來就很簡單了…

滿足以下遞推式:

A(1) = 1
A(2) = 2
A(n) = A(n-1) + A(n-2) 

其中A(n)表示到第n步梯子時有多少中不同的爬法。記得以前高中時也考過這個題.. 當時也不會。

想想,其實自己以前也不夠聰明的… 想來聰明也可來自強大的記憶力和廣博的經歷。多多刷題啊..

代碼

class Solution {
public:
    int climbStairs(int n) {
        vector<int> R(n) ;
        R[0] = 1 ;
        R[1] = 2 ;
        for(size_t i = 2; i < n; ++i)
        {
            R[i] = R[i-1] + R[i-2];
        }
        return R[n-1];
    }
};

後記

  1. 代碼考慮不完全!

    看了題解,才突然發現自己沒有考慮n爲小於等於0的情況…b邊界條件還是考慮不周啊.雖然不影響最後的提交結果…

  2. 可以比較容易地寫出空間O(1)的版本

    猶記得當年寫斐波拉切時,我只會學着書上用遞歸,學長用的數組,網上找到O(1)方法…

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章