leetCode 746. 使用最小花费爬楼梯 + 记忆化搜索 + 递推 + 动态规划 + 空间优化

news2024/11/25 4:36:00

关于此题我的往期文章:

leetCode 746. 使用最小花费爬楼梯 动态规划-CSDN博客icon-default.png?t=N7T8https://heheda.blog.csdn.net/article/details/133325840

  • dfs(i-1) 跳到 dfs(i) 需要花费 dfs(i-1) + cost[i-1]
  • dfs(i-2) 跳到 dfs(i) 需要花费 dfs(i-2) + cost[i-2]

 (1) 递归(超时)

class Solution {
public:
    // 递归(超时)
    int minCostClimbingStairs(vector<int>& cost) {
        int n = cost.size();
        function<int(int)> dfs=[&](int i) -> int{
            if(i==0 || i==1) return 0;
            return min(dfs(i-1)+cost[i-1],dfs(i-2)+cost[i-2]);
        };
        return dfs(n);
    }
};

(2)递归搜索 + 保存计算结果 = 记忆化搜索

class Solution {
public:
    // 记忆化搜索
    int minCostClimbingStairs(vector<int>& cost) {
        int n = cost.size();
        vector<int> memo(n+1,-1);
        function<int(int)> dfs=[&](int i) -> int{
            if(i==0 || i==1) return 0;
            int& res = memo[i];
            if(res != -1) return res;
            return res = min(dfs(i-1)+cost[i-1],dfs(i-2)+cost[i-2]);
        };
        return dfs(n);
    }
};

(3)1:1 翻译成递推

  • dfs(i) = min(dfs(i-1)+cost[i-1],dfs(i-2)+cost[i-2])
  • f(i) = min(f(i-1)+cost[i-1],f(i-2)+cost[i-2])
  • f(i+2) = min(f(i+1)+cost[i+1],f(i)+cost[i])
class Solution {
public:
    // 递推
    int minCostClimbingStairs(vector<int>& cost) {
        int n = cost.size();
        vector<int> f(n+1,0);
        for(int i=0;i<=n-2;i++) {
            f[i+2] = min(f[i+1]+cost[i+1],f[i]+cost[i]);
        }
        return f[n];
    }
};
class Solution {
public:
    // 递推
    int minCostClimbingStairs(vector<int>& cost) {
        int n = cost.size();
        vector<int> f(n+1,0);
        f[0]=0;
        f[1]=0;
        for(int i=2;i<=n;i++) {
            f[i] = min(f[i-1]+cost[i-1],f[i-2]+cost[i-2]);
        }
        return f[n];
    }
};
  • 空间优化
class Solution {
public: 
   // 递推 + 空间优化
    int minCostClimbingStairs(vector<int>& cost) {
        int n = cost.size();
        vector<int> f(2,0);
        f[0]=0;
        f[1]=0;
        for(int i=2;i<=n;i++) {
            f[i%2] = min(f[(i-1)%2]+cost[i-1],f[(i-2)%2]+cost[i-2]);
        }
        return f[n%2];
    }
};
class Solution {
public:
    // 递推 + 空间优化
    int minCostClimbingStairs(vector<int>& cost) {
        int n = cost.size();
        int f0=0,f1=0;
        for(int i=2;i<=n;i++) {
            int tmp = min(f1+cost[i-1],f0+cost[i-2]);
            f0 = f1;
            f1 = tmp; 
        }
        return f1;
    }
};

我的往期文章推荐:

LeetCode 70.爬楼梯 + 记忆化搜索 + 递推 + 动态规划 + 空间优化-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/weixin_41987016/article/details/134192204?spm=1001.2014.3001.5501leetCode 746. 使用最小花费爬楼梯 动态规划-CSDN博客icon-default.png?t=N7T8https://heheda.blog.csdn.net/article/details/133325840leetCode 198.打家劫舍 动态规划入门:从记忆化搜索到递推-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/weixin_41987016/article/details/134179583?spm=1001.2014.3001.5501

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1164408.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

node教程(四)Mongodb+mongoose

文章目录 一、mongodb1.简介1.1Mongodb是什么&#xff1f;1.2数据库是什么&#xff1f;1.3数据库的作用1.4数据库管理数据的特点 2.核心概念3.下载安装与启动4.命令行交互4.1数据库命令4.3文档命令 二、Mongoose1.介绍2.作用3.使用流程4.插入文档5.mongoose字段类型 一、mongod…

【服务器】Redis的安装及使用命令(Linux、Windows版)

目录 一、Redis简介 二、Redis安装 1、Linux版 1.1、下载 1.2、导入 1.3、解压 1.4、安装 1.5、修改文件 1.6、启动redis 1.7、测试 1.8、结束进程 1.9、修改密码访问 1.10、安装客户端工具&连接 2、Windows版 2.1、下载 2.2、安装 2.3、修改 2.4、连接 …

【Qt控件之QMovie】详解

Qt控件之QMovies 概述公共类型属性公共函数公共槽函数信号静态公共成员示例使用场景 概述 QMovie类是一个方便的类&#xff0c;用于播放具有QImageReader的动画。此类用于显示没有声音的简单动画。如果您想显示视频和媒体内容&#xff0c;请改用Qt多媒体框架Qt Multimedia mul…

整理笔记——0欧电阻、电感、磁珠

设计电路时&#xff0c;经常用到0欧电阻、电感、磁珠&#xff0c;这三个基础电子原件万用表量都是“短路”&#xff0c;这三者之间有什么区别&#xff1f;什么情况下用什么原件&#xff1f; 一、0欧电阻 0欧电阻&#xff0c;并不是指元件的电阻值为0&#xff0c;而是电阻值很小…

SQL面试

#(1)请写出要查询员工J开头的名字其工号(EMPNO)及部门名称(DEPTNA)的 SQL语句SELECT e.emp,e.name,d.deptna FROM emp e left join dept d on d.deptno e.deptno where e.name like J%#(2)请写出要查询 Kevin 所在部门的部门代号(DEPTNO)及部门名称(DEPTNA)的 SQL 语句SELECT e…

手持创新疫苗“国际名片”,康希诺叩开全球市场大门

消灭病痛&#xff0c;重在防患于未然&#xff0c;消灭病源和阻断传播渠道。疫苗&#xff0c;因此成为了全人类“防未病”的重要手段。而当着眼于有全球性风险的疾病&#xff0c;疫苗创新的国际化就显得尤为重要。 刚刚过去不久的10月24日&#xff0c;世界脊髓灰质炎日&#xf…

【kafka】记一次kafka基于linux的原生命令的使用

环境是linux&#xff0c;4台机器&#xff0c;版本3.6&#xff0c;kafka安装在node 1 2 3 上&#xff0c;zookeeper安装在node2 3 4上。 安装好kafka&#xff0c;进入bin目录&#xff0c;可以看到有很多sh文件&#xff0c;是我们执行命令的基础。 启动kafka&#xff0c;下面的…

蓝桥白皮书16.0版——2、蓝桥等考介绍及代报名方式、报名时间

等级考试综述 蓝桥等考全称为“蓝桥青少年信息技术等级考试” 。等级考试聚焦学生学习过程的跟 踪评价 &#xff0c;以考促学 &#xff0c;标准化中小学校教学、校外机构培训和家长学生自学的学习目标及学习进程。 等级考试命题原则 等级考试各组别考试范围是掌握该组别编程知识…

js字符串支持多个分隔符分割

js字符串支持多个分隔符分割 场景代码 场景 用户输入内容后&#xff0c;支持多个分隔符&#xff08;比如&#xff1a;中英文逗号&#xff0c;分号以及换号&#xff09;对字符串进行分割&#xff0c;之后提交给后台同学解析。 代码 function splitString(inputString, separat…

封装taro的api请求工具request.ts,并发送网络请求

使用taro的网络请求工具时&#xff0c;并没有统一的请求封装工具&#xff0c;这里我来分享一下我的请求工具&#xff0c;可以设置base_url和超时时间&#xff0c;还有响应数据格式处理。 在utils/request.ts中封装请求&#xff1a; import Taro from tarojs/taro;const TIME_…

Java——StringBuffer与StringBuilder的区别

Java——StringBuffer与StringBuilder的区别 StringBuffer和StringBuilder是Java中用于处理字符串的两个类&#xff0c;它们之间的主要区别在于线程安全性和性能方面。 1. 线程安全性&#xff1a; StringBuffer&#xff1a;StringBuffer 是线程安全的&#xff0c;所有的公共方…

知心早安问候语,愿你享受美好的时光,幸福快乐每一天

人生万里路&#xff0c;走好每一步&#xff0c;身体是本钱&#xff0c;平安是财富&#xff0c;开心就是护身符&#xff0c;健康才是摇钱树。新的一天&#xff0c;事事顺意&#xff01; 晨起福门开&#xff0c;快乐安康在&#xff0c;愉悦心态好&#xff0c;生活充满爱&#xf…

Blazor 虚拟滚动/瀑布流加载Table数据

page "/virtualScrolling" using BlazorApp.Data<h3>Table 虚拟滚动行</h3> <h4>Table 组件显示大数据时通常采用分页加载数据&#xff0c;还有一种虚拟行的技术类似手机滚动到底部时后台自动加载数据</h4><p>快速滚动时显示行占位&am…

【Linux系统学习】系统编程开发工具编译器gcc/g++使用

个人主页点击直达&#xff1a;小白不是程序媛 Linux专栏&#xff1a;Linux系统学习 目录 前言 Linux系统下安装gcc和g gcc和g的不同 gcc/g的使用 gcc/g选项 预处理 头文件的展开 宏替换 注释的删除 条件的编译 编译 汇编 链接 系统库 库的分类 库的安装 库的…

RT-Thread 9. VS2012下仿真RT-Thread 和LVGL

1. 在ENV中添加组件 2. 下载组件 3. 生成代码 4. 打开代码 双击project.vcxproj 编译 5. 运行

偶数矩阵判断【C语言作业】

题目 若一个布尔矩阵所有行和所有列的和都是偶数&#xff0c;则称为偶数矩阵。请编写一个程序&#xff0c;判断一个布尔矩阵是否是偶数矩阵。 要求&#xff1a; &#xff08;1&#xff09;输入:首先输入一个正整数n(n<100),代表该矩阵的大小&#xff0c;接下来是n行n列的矩…

Vue实现消费清单明细饼图展示

功能 可以进行消费项增删消费额大于500会标红消费金额合计饼图展示消费项 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-…

代码随想录算法训练营第四十一天 | LeetCode 416. 分割等和子集

代码随想录算法训练营第四十一天 | LeetCode 416. 分割等和子集 文章链接&#xff1a;01背包理论基础 01背包理论基础&#xff08;滚动数组&#xff09; 分割等和子集 视频链接&#xff1a;01背包理论基础 01背包理论基础&#xff08;滚动数组&#xff09; 分割等和子集 1. 01 …

腾讯云双11活动时间、活动入口、优惠政策详细解读

2023年腾讯云双11大促活动已开启&#xff0c;作为年终最大的一次优惠促销活动&#xff0c;腾讯云的优惠力度还是不错的&#xff0c;爆款云服务器首年88元&#xff0c;还有9999元大额代金券免费领取&#xff01; 一、腾讯云双11活动时间 即日起至2023-11-30 23:59:59&#xff0…

Envoy动态配置

Envoy动态配置 本节我们将学习 Envoy 的核心 - 动态配置的使用。 目录 本节实战 实战名称&#x1f6a9; 实战&#xff1a;Envoy动态配置-EDS-2023.10.31(测试成功)&#x1f6a9; 实战&#xff1a;基于 API 的动态配置-2023.11.2(测试成功) 1、基于文件的动态配置 Envoy 除了…