Day48 动态规划part09 198. 打家劫舍 213. 打家劫舍 II 337. 打家劫舍 III

Day48 动态规划part09 198. 打家劫舍 213. 打家劫舍 II 337. 打家劫舍 III

198. 打家劫舍

class Solution {
public:int rob(vector<int>& nums) {vector<int> dp(nums.size()); //考虑下标i的最大偷窃金额dp[i]if(nums.size()==0) return 0;if(nums.size()==1) return nums[0];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]); //不偷i:dp[i-1],偷i:dp[i-2]+nums[i]}return dp[nums.size()-1];}
};

213. 打家劫舍 II

class Solution {
public:int lineResult(vector<int>& nums,int start,int end){ //start和end都是可以取到的Index,两者数据量start-end+1if(start == end) return nums[start]; //此时数据量为1vector<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++){ //可以取到end故i<= enddp[i] = max(dp[i-2]+nums[i],dp[i-1]);}return dp[end];}int rob(vector<int>& nums) {if (nums.size() == 0) return 0;if (nums.size() == 1) return nums[0]; //这两行确保了nums.size()最小为2int result1 = lineResult(nums,0,nums.size()-2);int result2 = lineResult(nums,1,nums.size()-1);return max(result1,result2);}
};

337. 打家劫舍 III

class Solution {
public:vector<int> robTree(TreeNode* cur){if(cur == nullptr) return vector<int> {0,0}; //dp[0]为不偷,dp[1]为偷vector<int> leftdp = robTree(cur->left); //左右中后续遍历vector<int> rightdp = robTree(cur->right);int val1 = max(leftdp[0],leftdp[1]) + max(rightdp[0],rightdp[1]); //不偷该处节点,那么取左节点和右节点最大值int val2 = cur->val + leftdp[0] + rightdp[0];return {val1,val2};}int rob(TreeNode* root) {vector<int> dproot = robTree(root);return max(dproot[0],dproot[1]);}
};

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

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

相关文章

测试C#调用OpenCvSharp和IronOcr从摄像头中识别文字

学习了基于OpenCvSharp获取摄像头数据&#xff0c;同时学习了基于IronOcr的文字识别用法&#xff0c;将这两者结合即是从摄像头中识别文字。本文测试C#调用OpenCvSharp和IronOcr从摄像头中识别文字的基本用法、。   新版Winform项目&#xff0c;在Nuget包管理器中添加以下程序…

案例分析技巧-软件工程

一、考试情况 需求分析&#xff08;※※※※&#xff09;面向对象设计&#xff08;※※&#xff09; 二、结构化需求分析 数据流图 数据流图的平衡原则 数据流图的答题技巧 利用数据平衡原则&#xff0c;比如顶层图的输入输出应与0层图一致补充实体 人物角色&#xff1a;客户、…

告别繁琐!轻松创建旧版Spring Boot项目!

推荐文章 给软件行业带来了春天——揭秘Spring究竟是何方神圣&#xff08;一&#xff09; 给软件行业带来了春天——揭秘Spring究竟是何方神圣&#xff08;二&#xff09; 给软件行业带来了春天——揭秘Spring究竟是何方神圣&#xff08;三&#xff09; 给软件行业带来了春天—…

强化学习原理python篇06——DQN

强化学习原理python篇05——DQN DQN 算法定义DQN网络初始化环境开始训练可视化结果 本章全篇参考赵世钰老师的教材 Mathmatical-Foundation-of-Reinforcement-Learning Deep Q-learning 章节&#xff0c;请各位结合阅读&#xff0c;本合集只专注于数学概念的代码实现。 DQN 算…

[Python图像处理] 使用OpenCV创建深度图

使用OpenCV创建深度图 双目视觉创建深度图相关链接双目视觉 在传统的立体视觉中,两个摄像机彼此水平移动,用于获得场景上的两个不同视图(作为立体图像),就像人类的双目视觉系统: 通过比较这两个图像,可以以视差的形式获得相对深度信息,该视差编码对应图像点的水平坐标的…

基于Python 网络爬虫和可视化的房源信息的设计与实现

摘 要 一般来说&#xff0c;在房地产行业&#xff0c;房源信息采集&#xff0c;对企业来说至关重要&#xff0c;通过人工采集数据的方式进行数据收集&#xff0c;既耗时又费力&#xff0c;影响工作效率&#xff0c;还导致信息时效性变差&#xff0c;可靠性偏低&#xff0c;不利…

QWT开源库使用

源代码地址&#xff1a;Qwt Users Guide: Qwt - Qt Widgets for Technical Applications Qwt库包含GUI组件和实用程序类&#xff0c;它们主要用于具有技术背景的程序。除了2D图的框架外&#xff0c;它还提供刻度&#xff0c;滑块&#xff0c;刻度盘&#xff0c;指南针&#xf…

matlab appdesigner系列-仪器仪表4-旋钮(离散)

旋钮&#xff08;离散&#xff09;&#xff0c;或叫分档旋钮&#xff0c;跟旋钮的连续性相区别&#xff0c;呈分档性。 示例&#xff1a;模拟空调档位切换 操作步骤&#xff1a; 1&#xff09;将旋钮&#xff08;离散&#xff09;、信号灯、标签拖拽到画布上&#xff0c;并设…

CSS 星空按钮

<template><button class="btn" type="button"><strong>星空按钮</strong><div id="container-stars"><div id="stars"></div></div><div id="glow"><div class=…

Kafka-服务端-GroupMetadataManager

GroupMetadataManager是GroupCoordinator中负责管理Consumer Group元数据以及其对应offset信息的组件。 GroupMetadataManager底层使用Offsets Topic,以消息的形式存储Consumer Group的GroupMetadata信息以及其消费的每个分区的offset,如图所示。 consumer_offsets的某Partiti…

ffmpeg4.0.4 ffmpeg.c 讲解

ffmpeg.c 是 FFmpeg 中的一个核心文件&#xff0c;负责实现 FFmpeg 命令行工具的主要功能。这个文件包含了 FFmpeg 命令行工具的入口函数 main()&#xff0c;以及与命令行参数解析、多媒体处理、编解码、封装格式处理等相关的功能实现。 int main(int argc, char **argv) {int…

每日一题——LeetCode1365.有多少小于当前数字的数字

方法一 暴力循环 对于数组里的没一个元素都遍历一遍看有多少元素小于当前元素 var smallerNumbersThanCurrent function(nums) {let n nums.length;let ret [];for (let i 0; i < n; i) {let count 0;for (let j 0; j < n; j) {if (nums[j] < nums[i]) {count…

菜谱的未来:SpringBoot, Vue与MySQL的智能推荐系统设计

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

算法学习记录:动态规划

前言&#xff1a; 算法学习记录不是算法介绍&#xff0c;本文记录的是从零开始的学习过程&#xff08;见到的例题&#xff0c;代码的理解……&#xff09;&#xff0c;所有内容按学习顺序更新&#xff0c;而且不保证正确&#xff0c;如有错误&#xff0c;请帮助指出。 学习工具…

51单片机——电动车报警器

51单片机——电动车报警器 1.震动控制灯 硬件:震动传感器,51单片机 #include "reg52.h"sbit led1 P3^7;//根据原理图&#xff08;电路图&#xff09;&#xff0c;设备变量led1指向P3组IO口的第7口 sbit vibrate P3^3;//Do接到了P3.3口void Delay2000ms() //11.…

PINN物理信息网络 | 全局自适应物理信息神经网络SA-PINN

概述 本文提出的自适应加权方法在于权重适用于不同损失组件中的个别训练点,而不是整个损失组件。之前的方法可以被看作是这个方法的一个特例,当所有针对特定损失组件的自适应权重同时更新时。在之前的方法中,独立开发的极小极大加权方案[16]与SA-PINNs最为相近,因为它也通过…

Mac terminal/vi/vim 编译器 命令总结

一个程序员的自述&#xff1a; 纯纯的脚本编程&#xff0c;去工具化&#xff0c; 一个终端解决战斗&#xff0c; 乃我辈之云云尔。 你别管&#xff01;&#xff01; Mac terminal cd 切换路径ls 当前目录内容pwd 当前文件路径cp 复制 cp file.text /destinationmv 移动(或重命…

vue.js中如何使用动态组件。

使用场景&#xff1a; 在不同的情况下展示相应的组件。 在日常开发中&#xff0c;当我们考虑到要简化代码的情况下&#xff0c;我们要进行模块化&#xff0c;写很多组件&#xff0c;如何动态展示组件呢&#xff1f; 使用 <component is"" ></component>…

JavaScript浅拷贝和深拷贝

浅拷贝和深拷贝的区别 浅拷贝let a 10;let ba;a20console.log(b)//10 1&#xff0c;由于a和b基本类型并且都是在栈中的&#xff0c;它们分别进行保存&#xff0c;所以这里输出的b还是102&#xff0c;通过内存可以看出&#xff0c;它们的两个值是独立的&#xff0c;更改其中一…

CMake 完整入门教程(五)

CMake 使用实例 13.1 例子一 一个经典的 C 程序&#xff0c;如何用 cmake 来进行构建程序呢&#xff1f; //main.c #include <stdio.h> int main() { printf("Hello World!/n"); return 0; } 编写一个 CMakeList.txt 文件 ( 可看做 cmake 的…