dp入门:从记忆化搜索到递推 灵神[基础算法精讲17]

198. 打家劫舍

链接 : 

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

解决 : 

1.记忆化搜索(自顶向下) ; 

class Solution {
public:int rob(vector<int>& nums) {// 记忆化搜索int n = nums.size();vector<int> memo(n,-1); // - 1表示没有计算过function<int(int)> dfs = [&](int i) -> int{if(i<0) return 0;if(memo[i] != -1) return memo[i];return memo[i] = max(dfs(i-1),dfs(i-2)+nums[i]);};return dfs(n-1);}
};

2.递推(自底向上)

class Solution {
public:int rob(vector<int>& nums) {// 递推int n = nums.size();int a =0 , b = 0 ;int ans = 0;for(int i=0;i<n;i++){ans = max(a+nums[i],b);a = b;b = ans;} return ans;}
};

3.dp数组写法 :

class Solution {
public:int rob(vector<int>& nums) {int n = nums.size();if(n==1) return nums[0];if(n==2) return max(nums[0],nums[1]);vector<int> dp(n,INT_MIN);dp[0] = nums[0];dp[1] = max(nums[0],nums[1]);for(int i=2;i<n;i++){dp[i] = max(dp[i-2]+nums[i],dp[i-1]);}return dp[n-1];}
};

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python - 网络传输数据格式【字节流】传输优点及数据格式【字符,字典,字节,二进制,十六进制】的转换

一. 前言 在网络传输数据时&#xff0c;数据本质上是以二进制形式进行传输的。无论是传输字节还是传输二进制数据&#xff0c;最终都会转化为二进制进行传输。 所以&#xff0c;从传输速度的角度来看&#xff0c;无论是传输字节还是传输二进制数据&#xff0c;实际上是相同的…

光学镜头市场研究:预计2029年将达到460亿元

随着终端产品应用领域的不断拓宽和深化&#xff0c;未来光学镜头设计和生产技术的重点是提高成像质量、增加功能并缩小体积。具体而言&#xff0c;光学镜头产品技术在不同的应用领域正呈现出不同的特点。如在数字安防领域&#xff0c;随着视频监控技术应用范围和场景的逐步扩展…

Python自动化测试(unittest框架)

一、什么是框架 框架是由大佬开发或者专业的研发团队研发的技术骨架&#xff0c;框架是一个半成品&#xff0c;框架是对常用的功能&#xff0c;基础的代码进行封装的一个工具&#xff0c;这个工具对外提供了一些API&#xff0c;其他的开发者只需要调用框架的接口即可&#xff…

聚焦生成式AI,从基石到平台到应用,亚马逊云科技火力全开

引言&#xff1a;在迈向生成式AI的道路上&#xff0c; 云厂商的行业声音越来越大…… 【全球云观察 &#xff5c; 科技热点关注】 2023年全球科技行业最火的莫过于生成式AI&#xff0c;即Artificial Intelligence Generated Content。在迈向生成式AI的道路上&#xff0c;虽然…

【加锁 】

文章目录 锁 理论部分锁的原理锁的应用 --- 封装 锁 理论部分 定义锁的两种方案 1.定义全局锁 直接在全局用 pthread_mutex_t mutex PTHREAD_MUTEX_INITIALIZER; 就不用再 init 和 destroy 了。 2.定义局部锁 pthread_mutex_init pthread_mutex_t 是库提供的一种数据类型 第二…

Docker 学习不再难:这些网站让你轻松掌握容器技术!

介绍&#xff1a;Docker是一个开源的应用容器引擎&#xff0c;基于Go语言并遵从Apache2.0协议开源。它可以让开发者将他们的应用及依赖打包到一个轻量级、可移植的容器中&#xff0c;进而发布到任何流行的Linux或Windows操作系统的机器上&#xff0c;同时也可以实现虚拟化。 Do…

certum ev ssl证书1180元一年,360浏览器显示公司名

Certum旗下的EV SSL证书是审核最严的数字证书&#xff0c;不仅对网站传输数据进行加密&#xff0c;还可以对网站身份进行验证&#xff0c;除此之外&#xff0c;它独有的绿色地址栏提升了网站的真实性&#xff0c;增强了客户对网站的信任感。今天就随SSL盾小编了解Certum旗下的E…

中国制造MES市场分析

据了解&#xff0c;作为制造业企业数字化转型的核心&#xff0c;制造执行系统是打通IT和OT&#xff0c;将运营和生产数据融合的关键通道。在工业元宇宙、数字孪生、智能制造、工业4.0、CPS等概念之下&#xff0c;MES在务实的制造业中需求明确、价值清晰&#xff0c;是制造业企业…

关东升老师从小白到大牛系列丛书(由清华大学出版社出版)

助力技术成长&#xff0c;成就大牛之路 在这个科技日新月异的时代&#xff0c;掌握一门编程语言或专业技能已是必备&#xff0c;不再是奢侈。清华大学出版社出版的“从小白到大牛”的系列丛书&#xff0c;涵盖Python、Java、Kotlin、Android和SQL&#xff0c;助你快速在技术之…

前端自定义icon的方法(Vue项目)

第一步&#xff1a;进入在线的编辑器进行设计 好用&#xff1a;百度字体编辑器 比如先导入有个ttf文件 添加新字体 双击每个模块进入编辑区域 更改相应的信息&#xff0c;比如name 编辑完了进行导出文件(各种格式就行了)就行了 第二步&#xff1a;在项目中asset文件储存这些文…

当你打开终端并输入命令时会发生什么?(下)

哈喽大家好&#xff0c;我是咸鱼 我们先来大致回顾一下文章《当你打开终端并输入命令时会发生什么?&#xff08;上&#xff09;》的内容 终端设备是由电传打字机演变过来的&#xff0c;电传打字机通过物理线与大型计算机连接在一块来实现输入输出 如上图&#xff0c;分别是二…

vue el-cascader组件change失效以及下拉框不消失的问题

文章目录 1.前言2. 碰到的问题3. 如何解决这两个问题 1.前言 最近项目上用到el-cascader这个组件,需要可以选第一级菜单&#xff0c;也需要可以选第二级菜单&#xff0c;点击完成之后需要关闭下拉框。其实功能比较简单&#xff0c;找了很多资料&#xff0c;没有找到合适的方案…