提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、题目 leecode-爬楼梯
题目:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
示例:
输入:n = 3
输出:3
解释:有三种方法可以爬到楼顶。
- 1 阶 + 1 阶 + 1 阶
- 1 阶 + 2 阶
- 2 阶 + 1 阶
二、代码
代码如下:
class Solution:
def climbStairs(self, n: int) -> int:
if n<= 2:
result = n
return result
result = []
for i in range(n+1):
result.append(0)
#result = [0 for i in range(n+1)]
result[1] = 1
result[2] = 2
for i in range(3,n+1):
result[i] = result[i-1] + result[i-2]
return result[-1]
2.思路
最开始没想出来,然后看了题解,画了图之后发现还是比较容易理解的。
题目中每次只能一次爬 1 或 2 个台阶,假设一共10个台阶,则我们能够跨到第10个台阶的起点可以是 “第9个台阶” 和 “第8个台阶”:从“第9个台阶跨一步或者从第8个台阶跨两步”这两种方式。因此,能够跨到第10个台阶的方式就可以看作是(能够跨到第9个台阶的方式+能够跨到第8个台阶的方式),也就是(n-1)+(n-2)。
总结
这次学会了定义空列表
result = []
for i in range(n+1):
result.append(0)。
记住了,今天又进步了一点点,明天也要加油哇!