代码随想录算法训练营29期Day38|LeetCode 509,70,746

文档讲解:动态规划理论基础 斐波那契数 爬楼梯 使用最小花费爬楼梯

509.斐波那契数

题目链接: https://leetcode.cn/problems/fibonacci-number/description/

思路:

当前这个数由上一个数和上上个数推导而来。所以我们每次记录两个数,用来推导下一个就行了。遍历顺序从2到n,当n小于等于2时可直接输出结果。

核心代码:

cpp 复制代码
class Solution {
public:
    int fib(int n) {
        if(n<=1) return n;
        int a,b,c;
        a=0;b=1;
        for(int i=2;i<=n;i++){
            c=a+b;
            a=b;
            b=c;
        }
        return c;
    }
};

70.爬楼梯

题目链接: https://leetcode.cn/problems/climbing-stairs/description/

思路:

我们考虑到达第n阶的方法,由于每次只能上一阶或者两阶,因此第n阶只能由第n-1阶或第n-2阶到达,即到达第n阶的方法 = 到达第n-2阶的方法 + 到达第n-1阶的方法。

写成方程即 dpi=dpi-2+dpi-1;

从方程我们知道求当前的数要用到之前的两个数字,所以我们从0遍历到n。由于我们每次只用到两个数字,因此开两个变量记录即可。

核心代码:

cpp 复制代码
class Solution {
public:
    int climbStairs(int n) {
        if(n<=2) return n;
        int a,b,c;
        a=1;b=2;
        for(int i=3;i<=n;i++){
            c=a+b;
            a=b;
            b=c;
        }
        return c;
    }
};

746.使用最小花费爬楼梯

题目链接: https://leetcode.cn/problems/min-cost-climbing-stairs/description/

思路:

我们考虑到达第n阶的方法,由于每次只能上一阶或者两阶,因此第n阶只能由第n-1阶或第n-2阶到达,即到达第n阶的最小花费 = min( 到达第n-2阶的最小花费+costn-2 , 到达第n-1阶的最小花费+costn-1 )。

写成方程即 dpi = min( dpi-2+costi-2 , dpi-1+costi-1 );

从方程我们知道求当前的数要用到之前的两个数字,所以我们从0遍历到n。由于我们每次只用到两个数字,因此开两个变量记录即可。

核心代码:

cpp 复制代码
class Solution {
public:
    int minCostClimbingStairs(vector<int>& cost) {
        int n=cost.size();
        int a,b,c;
        a=b=0;
        for(int i=2;i<=n;i++){
            c=min(a+cost[i-2],b+cost[i-1]);
            a=b;
            b=c;
        }
        return c;
    }
};

今日总结

今日学习时长1h,今天题目挺简单的,没花什么时间,接着去忙其他工作。

相关推荐
程序喵大人2 小时前
【C++进阶】STL容器与迭代器 - 01 STL 容器先解决元素放在哪里
开发语言·c++·stl
野生风长6 小时前
C++入门基础:从命名空间到引用与指针的全面解析
开发语言·c++
来一碗刘肉面6 小时前
栈的应用(表达式求值)
数据结构·算法
xiaowang1234shs7 小时前
怪兽轻断食技术深度测评:从断食计时引擎到AI识别算法的工程实践解析
数据库·人工智能·算法·macos·机器学习·p2p·visual studio
小果因子实验室7 小时前
量化研究--策略迁移算法1研究
算法
Escalating_xu8 小时前
C++可变参数模板与引用折叠精讲
开发语言·c++
Web极客码8 小时前
如何用三段式确定性剪枝,为 LLM Agent 砍掉 35% 的 Token 成本?
服务器·人工智能·算法·机器学习
程序猿乐锅8 小时前
【数据结构与算法 | 第六篇】力扣1109,1094差分数组
java·算法·leetcode
云泽8088 小时前
Visual Studio 2026 新手保姆级教程:环境搭建、界面优化与编译器配置详解
开发语言·c++·c·开发工具·visual studio