【代码随想录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
相关推荐
菥菥爱嘻嘻2 分钟前
力扣面试150(42/150)
算法·leetcode·职场和发展
Morriser莫9 分钟前
动态规划Day5学习心得
算法·动态规划
饭碗的彼岸one31 分钟前
重生之我在10天内卷赢C++ - DAY 2
linux·开发语言·c++·笔记·算法·vim
Cando学算法1 小时前
AtCoder Beginner Contest 416(ABCDE)
c++·算法
zzywxc7871 小时前
随着人工智能技术的飞速发展,大语言模型(Large Language Models, LLMs)已经成为当前AI领域最引人注目的技术突破。
人工智能·深度学习·算法·低代码·机器学习·自动化·排序算法
এ᭄画画的北北1 小时前
力扣-94. 二叉树的中序遍历
算法·leetcode
yu2024111 小时前
【异世界历险之数据结构世界(冒泡、选择、快速排序)】
数据结构·算法
1 小时前
LeetCode Hot 100 搜索旋转排序数组
数据结构·算法·leetcode
LZQqqqqo2 小时前
C#_创建自己的MyList列表
java·算法·c#
行然梦实2 小时前
论文阅读:《多目标和多目标优化的回顾与评估:方法和算法》
论文阅读·算法·机器学习·数学建模