leetcode刷题-70爬楼梯

题目

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

注意:给定 n 是一个正整数。

思路

最开始使用的是回溯的方法,但是时间效率地下没有通过,于是想到了动态规划的算法。对于i楼梯,到达其的方法有从i-1跨一步和i-2跨两步,因此到底i的方法就等于到达i-1的方法+到达i-2的方法

实现

class Solution:
    def climbStairs(self, n: int) -> int:
        stairs = [0 for i in range(n)]
        for i in range(n):
            if i <=1 :
                stairs[i] = 1
            if i > 0:
                stairs[i] += stairs[i-1]
            if i > 1:
                stairs[i] += stairs[i-2]
        return stairs[-1]

 

posted @ 2020-08-08 10:00  maoguai  阅读(134)  评论(0编辑  收藏  举报