假设你正在爬楼梯。需要 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 <= n <= 45
动态规划问题
class Solution(object):
def climbStairs(self, n):
"""
:type n: int
:rtype: int
"""
if n==0:
return 0
q=0
p=0
res=1
i=0
while i<n:
p=q
q=res
res=p+q
i+=1
return res
chatgpt生成代码解释:
这段 Python 代码是一个名为 Solution 的类,其中定义了一个 climbStairs 方法,该方法接受一个整数 n 作为输入参数,返回一个整数,表示到第 n 级台阶有多少种不同的方式可以爬楼梯。
该方法的实现方式为:首先判断如果 n 等于 0,则直接返回 0(因为在这种情况下无法进行任何爬楼操作)。否则,我们使用三个变量 q、p 和 res 来计算到第 n 级台阶时的爬楼方式数量。变量 p、q 和 res 初始值分别为 0、0 和 1。然后利用 while 循环进行迭代,一次计算一个级别上的爬楼动作并更新 p、q 和 res 的值,直至完成 n 次循环即得到答案。最终将计算结果 res 返回。
具体来说,在每次循环中,变量 p 存储上上次循环计算的爬楼方式数量,变量 q 存储上次循环计算的爬楼方式数量,变量 res 存储当前循环计算的爬楼方式数量,其中变量 i 表示当前循环执行的总次数。在每次循环中,我们将变量 p 值赋给变量 q、变量 q 值赋给变量 res、并将变量 p 和变量 q 相加后的值赋给变量 res,以求出下一级楼梯的爬楼方式数量。循环迭代结束后,变量 res 的值即为到第 n 级台阶时的爬楼方式数量。