LeetCode刷題 | Climbing Stairs

題目鏈接:https://oj.leetcode.com/problems/climbing-stairs/

心得:很簡單的題目,其實就是斐波拉切數列,值得注意的是,如果f(n)=f(n-1)+f(n-2)的方式來遞歸的話,結果會超時。

可以用類似於動態規劃的思路來解題,即從f(1)開始算到f(2),從而避免了遞歸過程中的重複計算。 

AC代碼:

# --*-- coding:utf-8 --*--
class Solution:
    # @param n, an integer
    # @return an integer
    def climbStairs2(self, n): #遞歸
        if n == 0 or n == 1:
            return 1
        return self.climbStairs(n-1) + self.climbStairs(n-2)
    def climbStairs(self, n): #動態規劃
        list = [1, 1]
        for i in range(n-1):
            list.append(list[i] + list[i+1])
        return list[n]

s = Solution()
print s.climbStairs(5)


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