目录
题目
-
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
示例 1:
输入:n = 2
输出:2
解释:有两种方法可以爬到楼顶。1. (1 阶 + 1 阶);2. (2 阶)
示例 2:
输入:n = 3
输出:3
解释:有三种方法可以爬到楼顶。1. (1 阶 + 1 阶 + 1 阶);2. (1 阶 + 2 阶);3. (2 阶 + 1 阶)
法一、暴力
-
思路:站到最后一梯往回看,可知:可以从n-1阶跨上来,也可以从n-2阶跨上来,其实每一阶都是如此
-
相当于斐波那契数列
class Solution:
def climbStairs(self, n: int) -> int:
if n==0 or n==1:
return 1
return self.climbStairs(n-1)+self.climbStairs(n-2)
- 超时
法二、动态规划
class Solution:
def climbStairs(self, n: int) -> int:
f=[0]*(n+1)
f[0]=f[1]=1
for i in range (2,n+1):
f[i]=f[i-1]+f[i-2]
return f[n]
标签:楼顶,爬楼梯,int,self,climbStairs,70,return
From: https://www.cnblogs.com/lushuang55/p/17830140.html