1. 题目
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
注意:给定 n 是一个正整数。
示例请看:爬楼梯
2. 解题思路
1层
方法
1. 1
2层
方法
1. 1 + 1
2. 2
3层
方法
1. 1 + 1 + 1
2. 1 + 2
3. 2 + 1
4层
方法
1. 1 + 1 + 1 + 1
2. 1 + 1 + 2
3. 1 + 2 + 1
4. 2 + 1 + 1
5. 2 + 2
5层
方法
1. 1 + 1 + 1 + 1 + 1
2. 1 + 1 + 1 + 2
3. 1 + 1 + 2 + 1
4. 1 + 2 + 1 + 1
5. 2 + 1 + 1 + 1
6. 2 + 1 + 2
7. 2 + 2 + 1
8. 1 + 2 + 2
推断:
- 1层 = 1
- 2层 = 2
- 3层 = 1层 + 2层 = 3
- 4层 = 3层 + 2层 = 5
- 5层 = 4层 + 3层 = 8
- n层 = n-1层 + n-2层
3. 演示
class Solution(object):
def climbStairs(self, n):
"""
:type n: int
:rtype: int
"""
if n <= 2:
return n
start = 3
a, b = 1, 2
while start <= n:
a, b = b, a + b
start += 1
return b