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)

大家都在看

  • (转)redis系列之——一致性hash算法

    数据分片(sharding)分布式数据存储时,经常要考虑数据分片,避免将大量的数据放在单表或单库中,造成查询等操作的耗时过长。比如,存储订单数据时使用三个mysql库(编号0,1,…

    Linux 2023年5月28日
    0135
  • 小试牛刀:Linux中部署RabbitMQ

    一、下载地址 本人采用的是 RabbitMQ 3.8.20+ Erlang 23.3.4.16 1、Erlang下载:https://github.com/erlang/otp/r…

    Linux 2023年6月14日
    096
  • Docker 容器虚拟化

    Docker 容器虚拟化 1、虚拟化网络 Network Namespace 是 Linux 内核提供的功能,是实现网络虚拟化的重要功能,它能创建多个隔离的网络空间,它们有独自网络…

    Linux 2023年6月7日
    0141
  • jdk8 线程池策略

    在ThreadPoolExecutor中提供了4种线程的策略可以供开发者直接使用:•AbortPolicy策略:默认策略,如果线程池队列满了丢掉这个任务并且抛出RejectedEx…

    Linux 2023年6月8日
    0120
  • Java 技术栈中间件优雅停机方案设计与实现全景图

    欢迎关注公众号:bin的技术小屋,阅读公众号原文 本系列 Netty 源码解析文章基于 4.1.56.Final 版本 本文概要 在上篇文章 我为 Netty 贡献源码 | 且看 …

    Linux 2023年6月6日
    0148
  • RPA跨系统自动生成采购订单

    bash;gutter:true;1、从开发器启动机器人2、RPA登录友采云3、RPA根据筛选条件,导出采购订单4、RPA请并登录NC5、RPA把读取到的数据,逐个录入到NC系统中…

    Linux 2023年6月7日
    0138
  • 网络协议及tcp协议详解

    说说TCP三次握手的过程? 第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Ser…

    Linux 2023年6月13日
    0100
  • 简单的kubernetes搭建

    一、基本环境: Centos7.X Docker Version: 1.13.1 二、kubernetes各组件介绍: etcd保存了整个集群的状态 kube-proxy负责为Se…

    Linux 2023年6月13日
    081
  • [Git系列] Git 基本概念

    版本控制系统 版本控制系统是一种帮助软件开发者实现团队合作和历史版本维护的软件,一个版本控制系统应具备以下列出的这几个基本功能: 允许开发者并发工作; 不允许一个开发者覆写另一个开…

    Linux 2023年6月14日
    0106
  • Unicode、UTF-8、UTF-16 终于懂了

    计算机起源于美国,上个世纪,他们对英语字符与二进制位之间的关系做了统一规定,并制定了一套字符编码规则,这套编码规则被称为ASCII编码 ASCII 编码一共定义了128个字符的编码…

    Linux 2023年6月13日
    0108
  • 2021年3月-第03阶段-前端基础-JavaScript基础语法-JavaScript基础第01天

    1 – 编程语言 1.1 编程 编程: &#x5C31;&#x662F;&#x8BA9;&#x8BA1;&#x7B97;&amp…

    Linux 2023年6月8日
    0101
  • Tomcat

    Tomcat Tomcat tomcat简介 tomcat的用处 部署tomcat 测试访问 访问Host Manager界面 访问Server Status tomcat简介 T…

    Linux 2023年6月6日
    0137
  • 使用Foxit Reader实现批量打印以及一页多版设置技巧

    阅文时长 | 0.36分钟字数统计 | 587.2字符主要内容 | 1、引言&背景 2、批量打印软件 3、Foxit Reader设置一页多版 4、声明与参考资料『使用Fo…

    Linux 2023年6月14日
    0119
  • Linux磁盘管理

    对Linux来说一切皆文件,Linux归根结底只有一个根目录,一个独立且唯一的文件结构,Linux的每个分区都是用来组成整个文件系统的一部分。所以Linux采用了磁盘挂载的方式,将…

    Linux 2023年6月8日
    0114
  • Android安卓进阶技术分享之AGP工作原理

    1.基础准备 在分析源码之前,我想你应该对 Android 打包流程已经有基础的了解,至少了解了下图的打包过程: 否则你有可能不了解下文中的专业术语。 2.AGP源码的打开方式 看…

    Linux 2023年6月13日
    0124
  • Ceph创建一个新集群 报错: File “/usr/bin/ceph-deploy”, line 18, in……….

    [root@ceph-node1 ceph]# ceph-deploy new node1 Traceback (most recent call last): File &quo…

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