leetcood学习笔记-70-爬楼梯

题目描述:

第一次提交:(超时)

class Solution:
    def climbStairs(self, n: int) -> int:
        if n == 0 or n == 1 or n == 2:
            return n
        return self.climbStairs(n - 1) + self.climbStairs(n - 2)
 
    

方法一:带记忆递归

class Solution(object):
    def __init__(self):
        self.cache = [1,2]
    def climbStairs(self, n):
        for i in range(2,n):
            self.cache.append(0)
        return self.core(n,self.cache)
    def core(self, n, r):
        if r[n-1] > 0:return r[n-1]
        q = self.core(n-1,self.cache)+self.core(n-2,self.cache)
        r[n-1] = q
        return q

方法二;斐波那契

class Solution:
    def climbStairs(self, n: int) -> int:
        a, b = 1, 1
        for i in range(n):
            a, b = b, a + b
        return a
    

猜你喜欢

转载自www.cnblogs.com/oldby/p/10524985.html