1. 斐波那契数 爬楼梯 使用最少花费爬楼梯

版本一:一维数组记录型

class Solution {
public:
    int fib(int n) {
        if(n  dp(n+1);
        dp[0] = 0;
        dp[1] = 1;
        for(int i = 2; i

利用一维数组进行记录。目的 明确动态规划的 的五步

  • 确定dp数组的含义
  • 确定递推公式
  • 初始化问题
  • 遍历问题
  • 日志问题

版本二:两个变量记录

class Solution {
public:
    int fib(int n) {
        if(n

因为每一次都只用到前面两个的数据,因此可以简化数组。降低空间复杂度。

版本三:递归

class Solution {
public:
    int fib(int n) {
        if(n

使用自顶向下的进行计算,中间存在重叠的子问题。可以利用一个数组进行记忆化搜索。

版本一:空间没有优化的版本

class Solution {
public:
    int climbStairs(int n) {
        if(n  dp(n + 1);
        dp[1] = 1;
        dp[2] = 2;
        for(int i = 3; i

确定五部曲,明确每一步含义。

版本二:优化空间

class Solution {
public:
    int climbStairs(int n) {
        if(n

因为每一次都只是用到前面两个dp的值,返回的也只是一个对应的dp值,所以可以进行空间的优化。

版本一:没有进行空间优化

class Solution {
public:
    int minCostClimbingStairs(vector& cost) {
        int height  = cost.size();
        if(height == 1) return cost[0];
        vector dp(height);
        dp[0] = cost[0];
        dp[1] = cost[1];
        for(int n = 2 ; n  < height; ++n){
            dp[n] = min(dp[n-1]  , dp[n-2] ) + cost[n] ;
        }

        return min(dp[height-1] , dp[height - 2]);
    }
};

版本二: 空间优化

class Solution {
public:
    int minCostClimbingStairs(vector& cost) {
        int height  = cost.size();
        if(height == 1) return cost[0];
        int dp[2] ;
        dp[0] = cost[0];
        dp[1] = cost[1];
        int dp3 = 0;
        for(int n = 2 ; n  < height; ++n){
            dp3 =  min(dp[1]  , dp[0] ) + cost[n] ;
            dp[0] = dp[1];
            dp[1] = dp3;
        }

        return min(dp[1] , dp[0]);
    }
};

Original: https://www.cnblogs.com/sansuitaibai/p/16704194.html
Author: sansuitaibai
Title: 1. 斐波那契数 爬楼梯 使用最少花费爬楼梯

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/577621/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 初识前后端

    初识前后端 在学习了解前后端的过程中,自己看到了这一篇好的文章,摘下了一些当下用的的内容,供复习参考。 什么是前端开发? 前端开发主要涉及网站和 App,用户能够从 App 屏幕或…

    Linux 2023年6月13日
    0110
  • 聊一聊如何搭建高性能网站哪一些事

    在开发中经常会遇到网站的性能平静下来,打开慢的情况。我们平常开发中怎么 一步一步排查这些问题并 解决问题呢 在快节奏的时代中,慢是个不容忍受的事情。 一、 为什么会’慢…

    Linux 2023年6月14日
    0120
  • zabbix4.0 本地安装详解及步骤

    安装前说明下,下面安装过程中涉及selinux部分仅供参考,可能会导致启动服务时产生各种报错,作者也是在折腾了无数日夜后报错不断而放弃治疗,直接永久关闭了selinux(啊,没有s…

    Linux 2023年6月8日
    094
  • JavaScript DOM操作(二)

    上机二 JavaScript DOM操作 目的: 熟练掌握JavaScript的文档对象模型DOM概念,以及各种节点类型和节点操作。 重点掌握元素节点的各种操作方法。 要求: 实现…

    Linux 2023年6月13日
    098
  • CANoe的安装和使用

    CANoe的简介 CANoe是德国Vector公司为汽车总线的开发而设计的一款总线开发环境,全称叫CAN open environment。CANoe集合了网络监控、数据获取/记录…

    Linux 2023年6月13日
    0194
  • 08_Linux基础-vim-tmux-字符编码

    08_Linux基础-vim-tmux-字符编码 一. vim 文本编辑器-vim(编辑文本) Windows:记事本、word、sublime、pycharm能编辑音乐、视频、图…

    Linux 2023年6月6日
    098
  • VirtualBox 和宿主机挂载共享文件夹 步骤记录

    问题记录 这个功能不常用(感觉这个步骤很繁琐,用finalshell连ssh就能很溜),但是有时候在公司网络受限的时候安装不了ssh,只能用这个挂载的方式。 防止后期遗忘步骤,我把…

    Linux 2023年6月6日
    0149
  • 快速部署LAMP黄金架构,搭建disuz论坛

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月7日
    049
  • MIT6.828——Lab1 partA(麻省理工操作系统课程实验)

    Lab1 基本部分 在实验给出的文档中,已经详说明了早期PC的内存布局,并且运行了 bootloader。详细地解释了,上电后BIOS所做的工作,因此这部分不再赘述。需要注意的是 …

    Linux 2023年5月27日
    0157
  • 【转】redis 消息队列发布订阅模式spring boot实现

    /*redis 消息处理器/ @Component public class MessageReceiver { /*接收消息的方法/ public void receiveMes…

    Linux 2023年5月28日
    093
  • “XZ”格式文件解压

    1、下载xz 官网:https://tukaani.org/xz/ 例:wget https://nchc.dl.sourceforge.net/project/lzmautils…

    Linux 2023年6月6日
    0100
  • 1:文件与目录

    CD 切换当前工作目录 mkdir 创建目录 re -dir 删除目录 pwd 打印当前工作目录 绝对路径和相对路径 硬链接 和软链接 CP拷贝 MV 移动 dirname 和 b…

    Linux 2023年6月7日
    0129
  • Linux系统僵尸进程详解

    大安好,我是良许。 本文我们将来讨论一下什么是僵尸进程,僵尸进程是怎么产生的,如何杀死一个僵尸进程。 Linux中的进程是什么? 讲到进程,我们要先了解一下另一个概念: &…

    Linux 2023年6月14日
    0145
  • JMeter压测出现“the target server failed to respond“的解决办法

    压测接口的时候,遇到了这个问题,在网上找到解决方案,试一下还挺管用,800并发没改前20%以上的报错率,改完800并发0.00%报错率。 感谢曲健老师的分享 解决方案如下: 修改执…

    Linux 2023年6月8日
    082
  • spring boot实现不同生产环境下的文件配置

    spring boot项目开发时不同开发环境,打包生成不同的文件。(避免生产环境得到开发环境时的配置文件) 配置不同生产环境 本文适用于开发环境下需要打包项目至生产环境,避免开发环…

    Linux 2023年6月7日
    084
  • RAID级别

    常用选项 模式: 创建:-C 装配:-A 监控:-F 管理:-f, -r, -a < raiddevice> : /dev/md# < component-dev…

    Linux 2023年6月6日
    081
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球