代码随想录算法训练营第三十八天 | 509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

代码随想录算法训练营第三十八天 | 509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

509. 斐波那契数

题目

解法

  1. 使用动态规划
cpp 复制代码
class Solution {
public:
    int fib(int n) {
        if(n <= 1) return n;

        // 定义dp数组和下标
        vector<int> dp(n+1);
        // 初始化
        dp[0] = 0;
        dp[1] = 1;
        // 确定递推公式
        for (int i = 2; i <= n; i++) { // 确定遍历顺序
            dp[i] = dp[i-1] + dp[i-2]; 
        }
        return dp[n];
    }
};

时间复杂度:O(n)

空间复杂度:O(n)

70. 爬楼梯

题目

解法

cpp 复制代码
class Solution {
public:
    int climbStairs(int n) {
        if (n <= 1) return 1;
        vector<int> dp(n+1);
        dp[1] = 1;
        dp[2] = 2;
        for (int i = 3; i <= n; i++ ) {
            dp[i] = dp[i-1] + dp[i-2];
        } 
        return dp[n];
    }
};

时间复杂度:O(n)

空间复杂度:O(n)

cpp 复制代码
class Solution {
public:
    int climbStairs(int n) {
        if (n <= 1) return 1;
        int dp[3];
        dp[1] = 1;
        dp[2] = 2;
        for (int i = 3; i <= n; i++ ) {
            int sum  = dp[1] + dp[2];
            dp[1] = dp[2];
            dp[2] = sum;  
        } 
        return dp[2];
    }
};

时间复杂度:O(n)

空间复杂度:O(1)

746. 使用最小花费爬楼梯

题目

解法

cpp 复制代码
class Solution {
public:
    int minCostClimbingStairs(vector<int>& cost) {
        // 定义数组
        vector<int> dp(cost.size() + 1);
        //初始化
        dp[0] = 0;//默认第一步是不花费的
        dp[1] = 0;
        for (int i = 2; i <= cost.size(); i++){
            dp[i] = min(dp[i-1]+cost[i-1], dp[i-2]+cost[i-2]);
        }
        return dp[cost.size()];
    }
};

时间复杂度:O(n)

空间复杂度:O(n)

感悟

动态规划简单题也需要认真对待

相关推荐
沐怡旸4 小时前
【底层机制】std::unique_ptr 解决的痛点?是什么?如何实现?怎么正确使用?
c++·面试
感哥4 小时前
C++ 内存管理
c++
聚客AI4 小时前
🙋‍♀️Transformer训练与推理全流程:从输入处理到输出生成
人工智能·算法·llm
大怪v7 小时前
前端:人工智能?我也会啊!来个花活,😎😎😎“自动驾驶”整起!
前端·javascript·算法
惯导马工9 小时前
【论文导读】ORB-SLAM3:An Accurate Open-Source Library for Visual, Visual-Inertial and
深度学习·算法
骑自行车的码农10 小时前
【React用到的一些算法】游标和栈
算法·react.js
博笙困了11 小时前
AcWing学习——双指针算法
c++·算法
感哥11 小时前
C++ 指针和引用
c++
moonlifesudo11 小时前
322:零钱兑换(三种方法)
算法
感哥21 小时前
C++ 多态
c++