力扣70. 爬楼梯

动态规划

  • 思路:
    • 使用递归比较容易理解, f(n) = f(n - 1) + f(n - 2);
      • 到剩余1级台阶有 f(n - 1),到剩余2级台阶有 f(n-2);
      • 边界情况是
        • n = 0, f(0) = 1
        • n = 1, f(1) = 1
        • n = 2, f(2) = 2
      • 递归代码实现:
cpp 复制代码
class Solution {
public:
    int climbStairs(int n) {
        if (n == 0) {
            return 1;
        }
        if (n == 1) {
            return 1;
        }

        if (n == 2) {
            return 2;
        }

        return climbStairs(n - 1) + climbStairs(n - 2);
    }
};
  • 很遗憾的事 n = 44 时,反馈超时了;所以,需要将递归变换一下;
  • 使用两个变量来缓存前两种情形的结果,根据转移方程 f(n) = f(n - 1) + f(n - 2),迭代 n 次即可;
cpp 复制代码
class Solution {
public:
    int climbStairs(int n) {
        int p = 0;
        int q = 0;
        int result = 1;
        
        for (int step = 1; step <= n; ++step) {
            p = q;
            q = result;
            result = p + q;
        }

        return result;
    }
};
相关推荐
*.✧屠苏隐遥(ノ◕ヮ◕)ノ*.✧几秒前
C语言_数据结构总结6:链式栈
c语言·开发语言·数据结构·算法·链表·visualstudio·visual studio
田梓燊10 分钟前
leetcode 95.不同的二叉搜索树 Ⅱ
数据结构·算法·leetcode
IT猿手11 分钟前
2025最新群智能优化算法:云漂移优化(Cloud Drift Optimization,CDO)算法求解23个经典函数测试集,MATLAB
开发语言·数据库·算法·数学建模·matlab·机器人
commonbelive1 小时前
考研机试常见基本题型
c语言·c++·算法
wtmReiner2 小时前
记录--洛谷 P1294 高手去散步
算法·深度优先
孑么3 小时前
力扣 编辑距离
java·数据结构·算法·leetcode·职场和发展·贪心算法·动态规划
手握风云-3 小时前
Java数据结构第二十期:解构排序算法的艺术与科学(二)
数据结构·算法·排序算法
IT猿手5 小时前
2025最新群智能优化算法:海市蜃楼搜索优化(Mirage Search Optimization, MSO)算法求解23个经典函数测试集,MATLAB
开发语言·人工智能·算法·机器学习·matlab·机器人
IT猿手7 小时前
2025最新群智能优化算法:山羊优化算法(Goat Optimization Algorithm, GOA)求解23个经典函数测试集,MATLAB
人工智能·python·算法·数学建模·matlab·智能优化算法
Dream it possible!10 小时前
LeetCode 热题 100_字符串解码(71_394_中等_C++)(栈)
c++·算法·leetcode