力扣刷题记录(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.mzph.cn/news/582236.shtml

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

相关文章

雷军的最后一战,就这?

作者 | 魏启扬 来源 | 洞见新研社 2021年3月30日&#xff0c;小米官宣进军电动汽车赛道后的1003天&#xff0c;小米汽车亮相了。 由于是雷军“人生中最后一次重大的创业项目”&#xff0c;押上了雷军“人生所有积累的战绩和声誉”&#xff0c;小米对于造车极为重视&#xff…

性能手机新标杆,一加 Ace 3 发布会定档 1 月 4 日

12 月 27 日&#xff0c;一加宣布将于 1 月 4 日发布新品一加 Ace 3。一加 Ace 系列秉持「产品力优先」理念&#xff0c;从一加 Ace 2、一加 Ace 2V 到一加 Ace 2 Pro&#xff0c;款款都是现象级爆品&#xff0c;得到了广大用户的认可与支持。作为一加 2024 开年之作&#xff0…

【没有哪个港口是永远的停留~论文解读】Both Style and Fog Matter

Both Style and Fog Matter 原文&#xff1a;https://arxiv.org/pdf/2112.00484.pdf 解决问题&#xff1a;大雾、下雨、下雪天模糊场景 其他人做法&#xff1a; 1-去雾算法&#xff0c;人工干扰 2-合成的雾图像&#xff0c;不像真实的雾图像那样真实&#xff0c;也会扩大清…

C++ 151. 反转字符串中的单词

给你一个字符串 s &#xff0c;请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意&#xff1a;输入字符串 s中可能会存在前导空格、尾随…

12.27_黑马数据结构与算法笔记Java(补1)

目录 266 活动选择问题 分析 267 活动选择问题 贪心 268 分数背包问题 贪心 269 0-1 背包问题 贪心 270 斐波那契 动态规划 271 斐波那契 动态规划 降维 272 Bellman Ford 动态规划 分析 273 Bellman Ford 动态规划 实现1 274 Bellman Ford 动态规划 实现2 275 Leetco…

Android APP耗电量采集数据模板

测试设备&#xff1a;平板 测试版本&#xff1a;设备型号测试版本 安卓版本&#xff1a;10 应用包名&#xff1a;com.android.XXX 测试时长&#xff1a;30mins 测试结论&#xff1a;针对xxx功能测试什么内容&#xff0c;分为什么场景&#xff0c;统计耗电量时长数据等 测试数据…

(12)Linux 常见的三种进程状态

&#x1f4ad; 前言&#xff1a;本章我们专门讲解进程的状态。我们先学习具体的 Linux 系统状态&#xff0c;再去介绍 OS 学科面对的概念如何理解 —— 运行态、终止态、阻塞态以及挂起态。 进程状态&#xff08;Process Status&#xff09; 什么是进程状态&#xff1f; 进程…

C语言—每日选择题—Day64

前言 两天没更新了&#xff0c;作者在复习期末考试&#xff0c;更新一波&#xff0c;祝大家都能顺利通过期末考试&#xff01;&#xff01;&#xff01; 指针相关博客 打响指针的第一枪&#xff1a;指针家族-CSDN博客 深入理解&#xff1a;指针变量的解引用 与 加法运算-CSDN博…

存储:双磁盘RAID0磁盘阵列搭建

磁盘介绍 固态磁盘分为SATA口和PCIE口&#xff0c;SATA单盘实测最高550MB/s&#xff0c; PCIE 4.0单盘写入实测最高2.2GB/s。以上均为缓内速度。 SATA口和PCIE口速度对比 准备工作 准备同型号的两个固态磁盘&#xff08;不同型号的磁盘组raid会以较低的速度和空间的raid为主…

JavaWeb——监听器Listener 过滤器Filter——韩顺平学习笔记

文章目录 JavaWeb 三大组件之监听器 ListenerListenerJavaWeb 的监听器ServletContextListener 监听器ServletContextAttributeListener 监听器其它监听器-使用较少HttpSessionListener 监听器HttpSessionAttributeListener 监听器ServletRequestListener 监听器ServletRequest…

idea中终端Terminal页面输入命令git log后如何退出

1、idea中Terminal输入命令git log后如何退出&#xff1f; 2、解决 输入q键会自动退出git log命令

除自身以外数组的乘积(LeetCode 238)

文章目录 1.问题描述2.难度等级3.热门指数4.解题思路4.1 暴力4.2 左右乘积列表4.3 空间复杂度 O(1) 的方法 参考文献 1.问题描述 给你一个整数数组 nums&#xff0c;返回数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据保证…

反转链表算法及优化(leetcode第206题)

题目描述&#xff1a; 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1] 示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1] 示例…

Python 爬虫 小案例 之 快手下载视频

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码 知识点: 动态数据抓包 requests发送请求开发环境: python 3.8 运行代码 pycharm 2022.3 辅助敲代码 requests pip insta…

vue3-富文本编辑器(vue-quill)

官网&#xff1a;VueQuill | Rich Text Editor Component for Vue 3 安装 pnpm add vueup/vue-quilllatest 使用 局部使用 先导包 import { QuillEditor } from vueup/vue-quill import vueup/vue-quill/dist/vue-quill.snow.css; 再使用 <QuillEditor theme"snow…

最新AI系统ChatGPT网站H5系统源码,支持Midjourney绘画,GPT语音对话+ChatFile文档对话总结+DALL-E3文生图

一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作Ch…

2023年湘潭大学软件工程考试总结

选择 选择是全部单选&#xff0c;没有把多选题改成单选题出&#xff0c;我还是太年轻了&#xff0c;出题肯定是怎么简单轻松怎么来。 判断 判断题也确实是完全来自头歌的原题 选择判断总共30分&#xff0c;确定能拿到的分数是22分&#xff0c;其他的确实是原题但是自己没有…

HarmonyOS应用程序包快速修复命令调试开发指导

快速修复命令行调试开发指导 当前阶段&#xff0c;HarmonyOS为开发者提供了命令行的调试开发工具可供使用。比如&#xff0c;包名为com.ohos.quickfix的示例应用&#xff0c;版本号为1000000。该应用的当前版本运行中有某问题需要修复&#xff0c;此时&#xff0c;开发者可参考…

python 实现粒子群算法(带绘制)

本文章用python实现了粒子群算法&#xff0c; 标准PSO的算法流程如下&#xff1a; 初始化一群微粒&#xff08;群体规模为m&#xff09;&#xff0c;包括随机的位置和速度&#xff1b;评价每个微粒的适应度&#xff1b;对每个微粒&#xff0c;将它的适应值和它经历过的最好位…

C++day2作业

把课上strcut的练习&#xff0c;尝试着改成class #include <iostream>using namespace std; class Stu { private:int age;string sex;int hign; public:int soce;void get_information();void set_information(); }; void Stu::set_information() {static Stu s1;cout …