day38打卡

这篇具有很好参考价值的文章主要介绍了day38打卡。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

day38打卡

509. 斐波那契数

状态表示:

​ 第i个数的斐波那契数是dp[i]

状态转移方程

​ 见题目:dp[i] = dp[i-1] + dp[i-2]

初始化

​ 见题目,dp[0] = 0,dp[1] = 1,本题用两个变量代替即可。

填表顺序

​ 从左到右

返回值

​ dp[i]

class Solution {
public:
    int fib(int n) {
        if(n <= 1) return n;
        int a = 0, b = 1;
        int ret = 0;
        for(int i = 2; i <= n; i++)
        {
            ret = a + b;
            a = b;
            b = ret;
        }
        return ret;
    }
};

70. 爬楼梯

状态表示:

​ 爬到第i层,一共用dp[i]种方法

状态转移方程

​ 到达第i层,前一级可以是i-1,也可以是i-2(题目提到可以走1或者2步),参照之前的状态表示

​ 所以dp[i] = dp[i-1] + dp[i-2]

初始化

dp[1] = 1,dp[2] = 2

填表顺序

​ 从左到右

返回值

​ dp[n]

class Solution {
public:
    int climbStairs(int n) {
        if(n <= 1) return n;
        //创建dp表
        vector<int> dp(n+1, 0);
        //初始化
        dp[1] = 1, dp[2] = 2;
        //填表
        for(int i = 3; i <= n; i++)
        {
            dp[i] = dp[i-1] + dp[i-2];
        }
        //返回值
        return dp[n];
    }
};

746. 使用最小花费爬楼梯

状态表示:

​ 爬到第i层最少需要花dp[i]的钱

状态转移方程

​ 第i层的前一级是i-1层,或者是i-2层,选择一个花费少的即可(即为之前的花费+当前层的花费)

dp[i] = min(dp[i-1] + cost[i-1], dp[i-2] + cost[i-2])

初始化

​ 无特殊处理

填表顺序

​ 从左到右

返回值

​ dp[n]

class Solution {
public:
    int minCostClimbingStairs(vector<int>& cost) {
        //创建dp数组
        int n = cost.size();
        vector<int> dp(n+1);
        //初始化
        //填表
        for(int i = 2; i <= n; i++)
        {
            dp[i] = min(dp[i-1] + cost[i-1], dp[i-2] + cost[i-2]);
        }
        return dp[n];
    }
};

如果有空间复杂度要求,把dp[i-1]和dp[i-2]换为两个变量即可。文章来源地址https://www.toymoban.com/news/detail-834949.html

到了这里,关于day38打卡的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 算法刷题Day 38 动态规划理论基础+斐波那契数+爬楼梯

    动态规划的解题步骤: 确定 dp 数组(dp table)以及下标的含义 确定递推公式 dp 数组如何初始化 确定遍历顺序 举例推导 dp 数组 很基础

    2024年02月15日
    浏览(63)
  • 算法Day38 | 动态规划,509. 斐波那契数, 70. 爬楼梯, 746. 使用最小花费爬楼梯

    动态规划是一种解决问题的算法思想。它通常用于优化问题,其中要求找到一个最优解或最大化(最小化)某个目标函数。 动态规划的核心思想是 将问题分解成更小的子问题,并通过存储子问题的解来避免重复计算 。这样,可以通过解决子问题来构建原始问题的解。动态规

    2024年02月09日
    浏览(58)
  • 【LeetCode题目详解】第九章 动态规划part01 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯 (day38补)

    斐波那契数  (通常用  F(n) 表示)形成的序列称为 斐波那契数列 。该数列由  0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: 给定  n ,请计算 F(n) 。 示例 1: 示例 2: 示例 3: 提示: 0 = n = 30 斐波那契数列大家应该非常熟悉不过了,非常适合作为动规第

    2024年02月07日
    浏览(47)
  • 算法练习Day30 (Leetcode/Python-动态规划)

    62. Unique Paths There is a robot on an  m x n  grid. The robot is initially located at the  top-left corner  (i.e.,  grid[0][0] ). The robot tries to move to the  bottom-right corner  (i.e.,  grid[m - 1][n - 1] ). The robot can only move either down or right at any point in time. Given the two integers  m  and  n , return  the number of possible

    2024年01月20日
    浏览(43)
  • day38|动态规划-爬楼梯问题

    动态规划比较重要的是找到前后两个状态之间的联系,在向后遍历的过程中注意遍历的顺序和初始化操作。 动归基础类问题 背包问题 打家劫舍 股票问题 子序列问题 动态规划类的问题代码都是比较简洁的,按照dp打印逻辑观察打印出来的数值。 dp数组以及下标的含义dp[i][j

    2024年02月07日
    浏览(44)
  • LeetCode 面试打卡 4: 动态规划 - DataWhale 导学

    动态规划代码实现需要注意的问题 数组 dp 的初始化大小不正确 ,需要根据题目中所给的数据确定好dp数组的大小。一般为[m,n]即可 数组 dp 的初始化逻辑有误 :根据题目条件,初始化dp数组 状态转移方程不正确 :根据题目中的变量设定状态转移方程。 121. 买卖股票的最佳时

    2024年04月24日
    浏览(38)
  • 【算法】动态规划 ⑦ ( LeetCode 55. 跳跃游戏 | 算法分析 | 代码示例 )

    LeetCode 55. 跳跃游戏 : https://leetcode.cn/problems/jump-game/ 给定一个 非负整数数组 nums ,你最初位于数组的 第一个下标 0 位置 。 数组中的每个元素 代表你在该位置可以 跳跃的最大长度。 判断你 是否能够到达最后一个下标。 给定一个一维数组 , 数组元素不能有负数 , 如 : {2, 2,

    2024年02月10日
    浏览(39)
  • 算法练习 Day38 | LeetCode509,70,746

    先导知识: 1、动态规划常见题型 动态规划基础问题 背包问题 打家劫舍 股票问题 子序列问题 2、动态规划五部曲 (1)确定dp数组的定义及下标的含义 (2)确定递推公式 (3)dp数组如何初始化 (4)遍历顺序 (5)打印dp数组 LeetCode509:509. 斐波那契数 题目描述: 斐波那契

    2024年02月21日
    浏览(41)
  • 算法训练day41|动态规划 part03(LeetCode343. 整数拆分、96.不同的二叉搜索树)

    题目链接🔥🔥 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。 示例 1: 输入: 2 输出: 1 解释: 2 = 1 + 1, 1 × 1 = 1。 示例 2: 输入: 10 输出: 36 解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。 说明: 你可以假设 n 不小于 2 且不大于

    2024年02月10日
    浏览(42)
  • day38打卡

    day38打卡 509. 斐波那契数 状态表示: ​ 第i个数的斐波那契数是dp[i] 状态转移方程 ​ 见题目: dp[i] = dp[i-1] + dp[i-2] 初始化 ​ 见题目, dp[0] = 0,dp[1] = 1 ,本题用两个变量代替即可。 填表顺序 ​ 从左到右 返回值 ​ dp[i] 70. 爬楼梯 状态表示: ​ 爬到第i层,一共用dp[i]种方法

    2024年02月22日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包