爬楼梯问题 leetcode70

Posted KeithTt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬楼梯问题 leetcode70相关的知识,希望对你有一定的参考价值。

假设你正在爬楼梯,需要n阶你才能到达楼顶,n是正整数
每次你可以爬1或2个台阶,有多少种不同的方法可以爬到楼顶

当n=1时,steps=1
当n=2时,1+1,2 steps=2
当n=3时,1+1+1,1+2,2+1 steps=3
当n=4时,1+1+1+1,1+2+1,1+1+2,2+1+1,2+2 steps=5
当n=5时,1+1+1+1+1,1+1+1+2,1+1+2+1,1+2+1+1,2+1+1+1,2+2+1,2+1+2,1+2+2 steps=8
...
经过简单推算,发现是一个斐波那契数列

n = 100

# 开辟一个0列表,由于索引从0开始,第100项索引为101,列表长度为101
# 另外当n=1时,0列表长度为2,steps[2]将超出索引范围,所以再加一
# t = [0] * (n+1)
steps = [0 for _ in range(n+2)]

steps[1] = 1
steps[2] = 2

for i in range(3, n+1):
    steps[i] = steps[i-1] + steps[i-2]

print(steps[n])
# 573147844013817084101

使用函数封装一下

def climbStairs(n):
    steps = [0 for _ in range(n+2)]
    steps[1] = 1
    steps[2] = 2
    for i in range(3, n+1):
        steps[i] = steps[i-1] + steps[i-2]
    return steps[n]

print(climbStairs(100))
# 573147844013817084101

参考:
https://leetcode-cn.com/problems/climbing-stairs/description/









以上是关于爬楼梯问题 leetcode70的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode70爬楼梯

LeetCode #70 爬楼梯

「动态规划」LeetCode 70(爬楼梯)

leetcode 70 爬楼梯

Leetcode#70. Climbing Stairs(爬楼梯)

LeetCode70.爬楼梯