西安有没有网站建设和营销的培训,网站谁建设的,做视频网站空间要多大,wordpress与phpstudy安装题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢#xff1f;
示例 1#xff1a;
输入#xff1a;n 2
输出#xff1a;2
解释#xff1a;有两种方法可以爬到楼顶。
1. 1 阶 1 阶
2. 2 阶
示例 2… 题目 假设你正在爬楼梯。需要 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 阶思路 写法1
class Solution:def climbStairs(self, n: int) - int:if n1:return 1# 1.确定dp数组及下标含义dp[i]表示爬到i阶有dp[i]种方法# 2.状态转移方程# dp[i] dp[i-1]dp[i-2]:第i阶楼梯由第i-1阶和第i-2阶转移过来# 3.初始化dp[1]1,dp[2]2# 4.执行顺序顺序依次执行即可dp [0]*(n1)dp[1] 1dp[2] 2for i in range(3,n1):dp[i] dp[i-1]dp[i-2]return dp[n]
写法2
class Solution:def climbStairs(self, n: int) - int:if n3:return ndp1 1dp2 2res 0for _ in range(n-2):res dp1dp2dp1,dp2 dp2,resreturn res