LeetCode解题(第70题)
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
注意:给定 n 是一个正整数。
示例 1:
输入:2
输出:2
解释:有两种方法可以爬到楼顶。
1. 1阶+1阶
2. 2阶
示例 1:
输入:3
输出:3
1. 1阶+1阶+1阶
2. 1阶+2阶
3. 2阶+1阶
解析:这道题首先想到是使用递归方法,但是很不幸的超时了。之后改成循环的方式。登上第n阶楼梯方式可以是在n-1阶爬一个台阶,也可以是在n-2阶爬两个台阶。所以可以得出d[n] = d[n-1]+d[n-2]。
代码(Python3版本)
def total(number):
if number ==1:
return 1
if number <=0:
return 0
if number ==2:
return 2
return total(number-1)+total(number-2)
class Solution:
def climbStairs(self, n: int) -> int:
def total(n):
a, b = 1,2
for i in range(n-1):
a, b = b, a + b
return a
a = total(n)
return a