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)

大家都在看

  • 无线配置多一个路由器作为家庭wifi的无线热点?

    以下内容为本人的著作,如需要转载,请声明原文链接微信公众号「englyf」 https://mp.weixin.qq.com/s/8OcDnY3O6ux41GntesHHcg 手头…

    Linux 2023年6月6日
    0117
  • Linux ARM中断后的处理(5)【转】

    1. 中断进入自定义函数 在中断发生后,经历ARM通用的处理阶段,到达irq_handler宏,转入C语言阶段。 //arch/arm/kernel/entry-armv.S/**…

    Linux 2023年6月8日
    091
  • PHP array_values()

    array_values array_values() 函数返回一个包含给定数组中所有键值的数组,但不保留键名。 示例: function arrayValues() { $dat…

    Linux 2023年6月7日
    0109
  • Ubuntu 18.04替换默认软件源

    安装Ubuntu 18.04后,默认源在国外,可以替换为国内的源以提升访问速度 参考https://mirrors.ustc.edu.cn/repogen/ sudo vi /et…

    Linux 2023年6月6日
    099
  • 性能测试

    一.性能测试概述 性能测试概念: 性能测试是指通过特定方式,对被测系统按照一定策略施加压力,获取系响应时间、TPS、资源利用率等性能指标,以期保证生产系统的性能能够满足用户需求的过…

    Linux 2023年6月6日
    093
  • 逆波兰表达式

    运用lambda表达式和包装器 150. 逆波兰表达式求值 – 力扣(LeetCode) class Solution { public: int evalRPN(ve…

    Linux 2023年6月13日
    0119
  • 同城双活概述

    引言 同城双活,是年度最大的架构变更。同城容灾,对于生产的高可用保障,重大的意义和价值是不言而喻的。 用储总的话说,这么重要的架构工作,所有架构师都应该重点主导和参与。 同城双活,…

    Linux 2023年6月14日
    0128
  • 学习一下 SpringCloud (六)– 注册中心与配置中心 Nacos、网关 Gateway

    (1) 相关博文地址: 学习一下 SpringCloud (一)– 从单体架构到微服务架构、代码拆分(maven 聚合): https://www.cnblogs.com/l-y…

    Linux 2023年6月14日
    0125
  • Linux入门命令

    命令入门 命令提示符详解 find cut sort wc sed aws [root@localhost ~]# # /root [lilei@node1 ~]$ #/home/…

    Linux 2023年6月11日
    092
  • 【小记】QMake 项目获取 Windows 管理员权限

    QMAKE_LFLAGS += /MANIFESTUAC:"level=’requireAdministrator’uiAccess=’false’" 将以上那…

    Linux 2023年6月13日
    090
  • Android(Linux)控制GPIO方法二

    前文《Android(Linux)控制GPIO的方法及实时性分析》主要使用Linux shell命令控制GPIO,该方法可在调试过程中快速确定GPIO硬件是否有问题,即对应的GPI…

    Linux 2023年6月7日
    083
  • Shell脚本编程初体验

    通常,当人们提到”shell脚本语言”时,浮现在他们脑海中是bash,ksh,sh或者其它相类似的linux/unix脚本语言。脚本语言是与计算机交流的另外…

    Linux 2023年5月28日
    0103
  • python_base

    1.查看可用函数dir() dir()可以用于查看某个包中可以使用的对象 import math dir(math) 2.查看使用帮助help() 用于查看帮助,用法是具体到函数名…

    Linux 2023年6月7日
    0101
  • redis 安装和命令

    转自:https://blog.csdn.net/hzlarm/article/details/99432240 在线安装: 查看使用的默认端口: 查看redis服务器的状态: 重…

    Linux 2023年5月28日
    0102
  • 如何使用 etcd 实现分布式 /etc 目录

    etcd 是一款兼具一致性和高可用性的键值数据库,简单、安全、快速、可信,目前是 Kubernetes 的首要数据存储。我们先来看一段 etcd 官方对于名字的解释。 The na…

    Linux 2023年6月14日
    0134
  • powershell 编写的tui界面脚本《电壳别名宝》

    中文名: 《电壳别名宝》 English name: 《Power Alias》 powershell 编写的tui界面脚本。 用途:保存容易记住的别名(支持中文),保存linux…

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