力扣刷题记录(20)LeetCode:198、213、337

198. 打家劫舍

我们从第一个开始分析:

dp[i]:i表示索引,dp表示当前索引可以拿到的最高金额

索引为0时,可以拿到的最高金额为1;

索引为1时,可以拿到的最高金额就是在索引[0,1]之间取,为2

索引为2时,就要看前两个索引[0,1]的状态了,如果索引0被取,那么当前值就可取;如果索引1被取,当前值就不能取。所以索引2可得的最高金额为max(dp[2-1],dp[2-2]+nums[i])

往下推就可以发现当前索引可以拿到的最高金额与前两个索引的状态有关,得递推公式dp[i]=max(dp[i-1],dp[i-2]+nums[i])

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

213. 打家劫舍 II

 

 环形房间的问题就在于不能同时取首尾两个房间,所以要分情况。

1.不偷第一个房间

2.不偷最后一个房间

class Solution {
public:int rob(vector<int>& nums) {if(nums.size()<2)   return nums[0];else if(nums.size()==2) return max(nums[0],nums[1]);vector<int> pd(nums.size(),0);//不偷窃第一个房间pd[1]=nums[1];pd[2]=max(nums[1],nums[2]);for(int i=3;i<nums.size();i++){pd[i]=max(pd[i-1],pd[i-2]+nums[i]);}int noOne=pd[nums.size()-1];//不偷窃最后一个房间pd.clear();pd[0]=nums[0];pd[1]=max(nums[1],nums[0]);for(int i=2;i<nums.size()-1;i++){pd[i]=max(pd[i-1],pd[i-2]+nums[i]);}int noEnd=pd[nums.size()-2];return max(noOne,noEnd);}
};

337. 打家劫舍 III

这题需要递归与动态规划同时进行,看到树要首先试试递归遍历。最初我使用层序遍历的,结果发现只能以一层为单位进行操作,不够灵活,不能通过全部测试。这里每个结点都只有两种状态,那就是偷与不偷,用一个数组来记录偷与不偷所能取得的最高金额。需采用后续遍历,因为我们要知道当前结点的子树所取最高金额的情况。 

class Solution {
public:vector<int> robTree(TreeNode* root){if(root==nullptr)   return {0,0};//存储左子树偷与不偷能够得到的最大金额vector<int> left=robTree(root->left);//存储右子树偷与不偷能够得到的最大金额vector<int> right=robTree(root->right);//偷当前结点int val0=root->val+left[1]+right[1];//不偷当前结点int val1=max(left[0],left[1])+max(right[0],right[1]);return {val0,val1};}int rob(TreeNode* root) {vector<int> ans=robTree(root);return max(ans[0],ans[1]);}
};

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

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

相关文章

使用c语言实现DH秘钥分配算法

使用c语言实现DH秘钥分配算法 DH算法原理 密钥分配 选择一个大素数p&#xff0c; 选择一个整数g(g < p)&#xff1b;通信方A选择一个随机数a&#xff0c;并发送 mod p 给 通信方B&#xff1b;通信方B选择一个随机数b&#xff0c;并发送 mod p 给 通信方A&#xff1b;通信…

UI自动化Selenium 元素定位之Xpath

一、元素定位方式 selenium中定位元素&#xff0c;通常有几种方式&#xff1a; 1、通过id定位&#xff1a;By.ID 2、通过Name定位&#xff1a;By.Name 3、通过元素其他属性定位&#xff0c;如class、type、text文本。。。。。。等等&#xff0c;如果要用属性定位那就需要使…

「Verilog学习笔记」超前进位加法器

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 超前进位加法器的实质是&#xff1a;对于输出的每一位Si 其实都可以用Si Ai ^ Bi ^ Cin来表示 我们需要做的只是判断加法结果的最高位该取几 例如本题中 输入的两个数A和B…

文档智能翻译,保留文档原有布局,版式还原

翻译能力&#xff1a; 使用讯飞的AI翻译能力&#xff1a;机器翻译 niutrans - 语音扩展 - 讯飞开放平台API&#xff1a; 机器翻译niutrans API 文档 | 讯飞开放平台文档中心 执行效果&#xff1a; 原文档&#xff1a; 翻译还原的文档&#xff1a; 源码如下&#xff1a; impor…

用户规模破亿!基于文心一言的创新应用已超4000个

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

基于Java Swing的图书管理系统

一、项目总体架构 本项目基于Java Swing框架&#xff0c;数据库采用的是MySQL。项目文件夹如下&#xff1a; 二、项目截图 1.登录和注册界面 2.用户界面 3.管理员管理图书类别 4.管理员管理书籍 5.管理员管理用户 项目总体包括源代码和课程论文&#xff0c;需要源码的…

【Recruitment Mercedes Benz】

Network I) JDII) IPv4与IPv6之间的区别是什么III) was advices3.1&#xff09; 防火墙&#xff0c;配置&#xff0c;数据的in/out (data flow in or flow out)3.2&#xff09; 域名&#xff0c;网址&#xff0c;端口3.3) 三次握手&#xff0c;四次挥手3.4) TCP/IP, 几层协议&a…

Java生态系统的进化:从JDK 1.0到今天

目录 前言 JDK 1.0&#xff1a;开启Java时代 JDK 1.1&#xff1a;Swing和内部类 JDK 1.2&#xff1a;Collections框架和JIT编译器 JDK 1.5&#xff1a;引入泛型和枚举 JDK 1.8&#xff1a;Lambda表达式和流 JDK 11以后&#xff1a;模块化和新特性 未来展望 总结 作者简…

奇富科技跻身国际AI学术顶级会议ICASSP 2024,AI智能感知能力迈入新纪元

近日&#xff0c;2024年IEEE声学、语音与信号处理国际会议ICASSP 2024&#xff08;2024 IEEE International Conference on Acoustics, Speech, and Signal Processing&#xff09;宣布录用奇富科技关于语音情感计算的最新研究成果论文“MS-SENet: Enhancing Speech Emotion Re…

Python从入门到熟练

文章目录 Python 环境Python 语法与使用基础语法数据类型注释数据类型介绍字符串列表元组集合字典 类型转换标识符运算符算数运算符赋值运算符复合运算符 字符串字符串拼接字符串格式化 判断语句bool 类型语法if 语句if else 语句if elif else 语句 循环语句while循环for 循环r…

Python可视化之Matplotlib

文章目录 Matplotlib与可视化分析简单图形的绘制pylot的高级功能添加图例与注释 Matplotlib与可视化分析 我们之前对数据的处理与分析&#xff0c;其实最终还是要利用可视化工具进行更加直观的输出 我们开业通过 pip install matplotlib命令来安装对应的模块 简单图形的绘制…

WEB渗透—PHP反序列化(九)

Web渗透—PHP反序列化 课程学习分享&#xff08;课程非本人制作&#xff0c;仅提供学习分享&#xff09; 靶场下载地址&#xff1a;GitHub - mcc0624/php_ser_Class: php反序列化靶场课程&#xff0c;基于课程制作的靶场 课程地址&#xff1a;PHP反序列化漏洞学习_哔哩…