【代码随想录day22】爬楼梯

题目

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 12 个台阶。你有多少种不同的方法可以爬到楼顶呢?

示例 1:

复制代码
输入:n = 2
输出:2
解释:有两种方法可以爬到楼顶。
1. 1 阶 + 1 阶
2. 2 阶

示例 2:

复制代码
输入:n = 3
输出:3
解释:有三种方法可以爬到楼顶。
1. 1 阶 + 1 阶 + 1 阶
2. 1 阶 + 2 阶
3. 2 阶 + 1 阶

思路

写法1

python 复制代码
class Solution:
    def climbStairs(self, n: int) -> int:
        if n==1:
            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]*(n+1)
        dp[1] = 1
        dp[2] = 2
        for i in range(3,n+1):
            dp[i] = dp[i-1]+dp[i-2]
        return dp[n]

写法2

python 复制代码
class Solution:
    def climbStairs(self, n: int) -> int:
        if n<3:
            return n
        dp1 = 1
        dp2 = 2
        res = 0
        for _ in range(n-2):
            res = dp1+dp2
            dp1,dp2 = dp2,res
        return res
相关推荐
bug_kada13 分钟前
DOM树的深度与广度优先遍历
算法
bug_kada14 分钟前
面试官:如何解析URL参数?
算法
PineappleCoder14 分钟前
面试官你好,请您听我“编解”!!!
前端·算法·面试
我想吃烤肉肉15 分钟前
leetcode-python-2154将找到的值乘以 2
python·算法·leetcode
范纹杉想快点毕业32 分钟前
请创建一个视觉精美、交互流畅的进阶版贪吃蛇游戏
数据库·嵌入式硬件·算法·mongodb·游戏·fpga开发·交互
先知后行。35 分钟前
线程的创建.销毁
开发语言·c++·算法
鱼嘻40 分钟前
西嘎嘎学习 - C++ 继承 - Day 10
开发语言·c++·学习·算法
孤廖1 小时前
从 “模板” 到 “场景”,用 C++ 磨透拓扑排序的实战逻辑
开发语言·c++·程序人生·算法·贪心算法·动态规划·学习方法
Flash.kkl1 小时前
优先算法——专题十一:字符串
算法
汉克老师8 小时前
第十四届蓝桥杯青少组C++选拔赛[2023.2.12]第二部分编程题(5、机甲战士)
c++·算法·蓝桥杯·01背包·蓝桥杯c++·c++蓝桥杯