代码随想录算法训练营第三十九天 | 198.打家劫舍 ,213.打家劫舍II,337.打家劫舍III

第三十九天打卡,今天解决打家劫舍系列问题,树形dp比较难。


198.打家劫舍

题目链接

解题过程

  • dp[i]:考虑下标i(包括i)以内的房屋,最多可以偷窃的金额为dp[i]

在这里插入图片描述

  • 要么不偷这一间,那就是前面那间赚的多;要么偷这一间,加上前前一间最多偷的金额。

动态规划

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

213.打家劫舍Ⅱ

题目链接

解题过程

  • 与打家劫舍Ⅰ的区别就是,这里第一个元素和最后一个元素不能同时选择,所以分两种情况就可以做

动态规划

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

337.打家劫舍Ⅲ

题目链接

解题过程

  • 没想到这题怎么做,用树形dp,每个节点记录偷或者不偷该点能偷得的总共最大钱数。用后序遍历,因为要用到子节点的结果

在这里插入图片描述

树形dp

class Solution {
private:vector<int> backtracking(TreeNode* node) {if (node == nullptr) return { 0,0 }; vector<int> left = backtracking(node->left);vector<int> right = backtracking(node->right);int val1 = max(left[0], left[1]) + max(right[0], right[1]); // 不偷该节点,可以偷或不偷左右节点int val2 = left[0] + right[0] + node->val; // 偷该节点,则不能偷子节点return { val1,val2 };}public:int rob(TreeNode* root) {vector<int>result = backtracking(root);return max(result[0], result[1]);}
};

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

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

相关文章

毕业设计选题:基于ssm+vue+uniapp的校园失物招领小程序

开发语言&#xff1a;Java框架&#xff1a;ssmuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;M…

大瓜-CSP-J/S2024第一轮认证题目涉嫌泄露。竞赛公平能否维护?

2024年全国信息学奥赛&#xff08;CSP-J/S&#xff09;泄题事件在竞赛界掀起了巨大的波澜。这场赛事本应是全国最具公信力的编程竞赛之一&#xff0c;但部分题目在考试前已被某些培训机构押中&#xff0c;这一泄题行为不仅让考生与家长感到愤怒&#xff0c;也让公众对奥赛的公平…

scp 命令:在两台主机间远程传输文件

一、命令简介 ​scp​ 命令使用 SSH ​加密的方式在本地主机和远程主机之间复制文件。 ‍ 二、命令参数 格式 scp [选项] 发送方主机和目录 接收方主机和目录注意&#xff1a;左边是发送方&#xff0c;右边是接收方。固定格式。 示例 #示例1 scp ~/test.txt soulio172.1…

豆包MarsCode体验

这个AI助手贴合做题者的思路&#xff0c;可以实时对代码进行分析&#xff0c;提出纠错、优化、规范性意见&#xff0c;非常好用。

基于数据挖掘的航空客户满意度分析预测系统

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 航空公司致力于提供多样化的服务以满足乘客需求&#xff0c;包括但不限于提供免费无线网络、免费食物饮品、提供网上预约服务、飞机出口位置、座椅舒适度、卫生状况等&#xff0c;并希望以此提升乘…

构造者模式多种实现方式

构造者模式 ​ 构造者模式建议将对象构造代码从产品类中抽取出来&#xff0c; 并将其放在一个名为构造者的独立对象中 ​ 构建者模式也是用来创建对象&#xff0c;但是相对于工厂模式来说&#xff0c;建造者模式适用于构建复杂对象&#xff0c;而工厂模式适用于创建对象的封装…

asp.net core日志与异常处理小结

asp.net core的webApplicationBuilder中自带了一个日志组件,无需手动注册服务就能直接在控制器中构造注入&#xff0c;本文主要介绍了net core日志与异常处理小结&#xff0c;需要的朋友可以参考下 ILogger简单使用 asp.net core的webApplicationBuilder中自带了一个日志组件…

网络安全-长亭雷池waf的sql绕过,安全狗绕过(5种绕过3+2)

目录 一、环境 二、讲解 三、绕过前思路整理 3.1 思路 3.1.1 入门思路 0x00截断filename 3.1.2 双写上传描述行(差异绕过&#xff09;【成功】 3.1.3双写整个 part 开头部分 3.1.4 构造假的 part 部分 1【成功】 3.1.5 构造假的 part 部分2【成功】 3.1.6 两个 bounda…

闲盒支持的组网方式和注意事项

1. 直连光猫拨号​ 通过光猫拨号&#xff0c;设备直连光猫的设备&#xff0c;需要对光猫开启UPNP并关闭DMZ 如果只接一个盒子&#xff0c;建议直接针对盒子IP开dmz。 2. 直连路由器​ 通过路由器拨号&#xff0c;设备直连路由器的设备&#xff0c;需要对路由器开启UPNP并关闭…

Sql Developer日期显示格式设置

默认时间格式显示 设置时间格式&#xff1a;工具->首选项->数据库->NLS->日期格式: DD-MON-RR 修改为: YYYY-MM-DD HH24:MI:SS 设置完格式显示&#xff1a;

【Java数据结构】 ---对象的比较

乐观学习&#xff0c;乐观生活&#xff0c;才能不断前进啊&#xff01;&#xff01;&#xff01; 我的主页&#xff1a;optimistic_chen 我的专栏&#xff1a;c语言 &#xff0c;Java 欢迎大家访问~ 创作不易&#xff0c;大佬们点赞鼓励下吧~ 前言 上图中&#xff0c;线性表、堆…

【嵌入式linux开发】SPI设备文件操作BMI088传感器

【嵌入式linux开发】SPI设备文件操作BMI088传感器 前言一、数据手册浅读二、代码 前言 在本篇博客中&#xff0c;将从BMI088传感器的数据手册出发&#xff0c;简单了解之后&#xff0c;展示如何通过SPI设备文件与传感器进行通信。除了使用linux文件设备操作spi接口&#xff0c…

微软 Win11 24H2 RP 26100.1876 预览版发布!附详细更新日志

系统之家于9月24日发出最新报道&#xff0c;微软为Release Preview频道的Windows Insider项目成员&#xff0c;发布了适用Windows11 24H2版本更新的 KB5043178&#xff0c;更新后&#xff0c;系统版本号将升至26100.1876。此更新为用户带来了不同的新功能&#xff0c;例如打开开…

力扣每日一题 字符串中最多数目的子序列 贪心 字符串 前缀和

Problem: 2207. 字符串中最多数目的子序列 &#x1f468;‍&#x1f3eb; 参考题解 class Solution {public long maximumSubsequenceCount(String s, String pattern){long res 0;long cnt1 0, cnt2 0;for (int i 0; i < s.length(); i){if (s.charAt(i) pattern.cha…

【有啥问啥】Chain of Goal-Oriented Reasoning(CoGOR)原理详解

Chain of Goal-Oriented Reasoning&#xff08;CoGOR&#xff09;原理详解 引言 在人工智能领域&#xff0c;实现真正意义上的智能一直是研究的重点。传统的 AI 方法在处理复杂、开放式的问题时往往显得力不从心。为了解决这一问题&#xff0c;Chain of Goal-Oriented Reason…

从汽车高速线束角度浅谈中控屏黑屏、闪屏及信号阈值低故障-之AEM线束测试仪应用案例

故障成因和解决方案 随着车载信息娱乐技术的迅速发展&#xff0c;中控屏已经成为现代汽车的标配。然而&#xff0c;许多主机厂和消费者在车辆使用过程中常常遇到中控屏出现黑屏、闪屏以及信号阈值低等问题&#xff0c;给使用带来了诸多困扰。本文将从汽车高速线束的角度&#…

LeetCode 面试经典150题 137.只出现一次的数字II

题目&#xff1a; 给你一个整数数组 nums &#xff0c;除某个元素仅出现 一次 外&#xff0c;其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。 思路&#xff1a; 方法一&#xf…

PlayerPerfs-不同平台的存储位置

一 .PlayerPrefs存储的数据存在哪里 不同平台存储位置不一样 Windows PlayerPrefs 存储在 HKCU\Software\[公司名称]\[产品名称] 项下的注册表中 其中公司和产品名称是 在“Project Settings”中设置的名称。 查看方法&#xff1a; 运行 regedit HKEY…

SeeClick: Harnessing GUI Grounding for Advanced Visual GUI Agents论文学习

首先是惯例强调一下自己的工作是基于视觉的&#xff0c;不是那种拿一个html文件或者UI结构树给模型让他操作的工作。然后提出了一个很有意思的观点&#xff0c;认为Grounding能力&#xff08;定位能力&#xff09;对模型表现的影响非常大。 主要novelty就这几个&#xff1a; …

加载数据模型:在数据采集中实现动态数据处理

介绍 在现代网络爬虫技术中&#xff0c;数据的动态处理成为了提升采集效率和准确性的重要手段。随着目标网站数据的多样性和复杂性增加&#xff0c;静态数据采集方法逐渐无法满足需求。本文以拼多多为例&#xff0c;探讨如何通过加载数据模型实现动态数据处理&#xff0c;并结…