当前位置: 首页 > news >正文

代码随想录训练营Day45

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、打家劫舍
  • 二、打家劫舍2
  • 三、打家劫舍3


前言

提示:这里可以添加本文要记录的大概内容:

今天是跟着代码随想录刷题的第45天,主要学习了打家劫舍的三个问题


提示:以下是本篇文章正文内容,下面案例可供参考

一、打家劫舍

思路:这一家最多能偷的是上一家偷的和上上家偷的加上自己这一家(因为上上家偷不偷,这一家都可以偷)

class Solution {
public:int rob(vector<int>& nums) {vector<int> dp(nums.size(),0);if(nums.size()==1) return nums[0];if(nums.size()==0) return 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]);}return dp[nums.size()-1];}
};

二、打家劫舍2

这道题的思想就是最前面和最后面只能要一个呗,这样的话我把要前面和要后面两个分开,要前面的不要后面,要后面的不要前面,然后取最大值就好了,这道题是编了一个函数来实现这样的一个过程。

class Solution {
public:int rob(vector<int>& nums) {if(nums.size()==1) return nums[0];if(nums.size()==2) return max(nums[1],nums[0]);int result1=robRange(nums,0,nums.size()-2);int result2=robRange(nums,1,nums.size()-1);return max(result1,result2);}int robRange(vector<int>& nums,int start,int end){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-1],dp[i-2]+nums[i]);}return dp[end];}};

三、打家劫舍3

思路:这里是结合了二叉树,用二叉树的搜索遍历,从下到上遍历,所以是后序遍历,用的是左右中,然后dp[0]是不偷这个最多能偷多少钱,dp[1]是偷这个东西,最多能偷多少钱,所以最后把根节点放进去,就是不偷根节点最多偷的钱数和偷根节点最多偷的钱数一比较,就可以得出来最终的结果。

class Solution {
public:int maxProfit(vector<int>& prices) {vector<vector<int>> dp(prices.size(),vector<int>(4));//dp[i][0]是第i天第一次不持有股最多有多少钱,dp[i][1]是第i天第一次持有股最多有多少钱,dp[i][2]是第i天第二次不持有股最多有多少钱,dp[i][3]是第i天第二次持有股最多有多少钱dp[0][0]=0;dp[0][1]=-prices[0];dp[0][2]=0;//考虑第0天,买了又卖又买又卖dp[0][3]=-prices[0];//考虑第0天,买了又卖又买for(int i=1;i<prices.size();i++){dp[i][0]=max(dp[i-1][0],dp[i-1][1]+prices[i]);//今天不持股,保持了昨天也不持或者昨天持股,今天卖了dp[i][1]=max(dp[i-1][1],-prices[i]);//今天持股,保持的昨天持股,或者今天刚买的,注意第一次持股直接是-price[i]dp[i][2]=max(dp[i-1][2],dp[i-1][3]+prices[i]);//今天第二次不持股,保持了昨天也是或者昨天第二次持股,今天卖了dp[i][3]=max(dp[i-1][3],dp[i-1][0]-prices[i]);//今天第二次持股,可能保持了昨天也可能昨天第一次刚不持股,然后立马买了}return max(max(max(dp[prices.size()-1][0],dp[prices.size()-1][1]),dp[prices.size()-1][2]),dp[prices.size()-1][3]);}
};

相关文章:

代码随想录训练营Day45

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、打家劫舍二、打家劫舍2三、打家劫舍3 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 今天是跟着代码随想录刷题的第45天&#xff…...

NAT和内网穿透

NAT&#xff08;Network Address Translation&#xff0c;网络地址转换&#xff09;是一种广泛应用于计算机网络的技术&#xff0c;其主要目的是为了解决IPv4地址空间的短缺问题&#xff0c;并且增强网络安全。NAT技术允许一个私有网络内的多个设备共享一个或几个全局唯一的公共…...

android | 声明式编程!(笔记)

https://www.jianshu.com/p/c133cb7cac21 讲的不错 命令式UI (how to do) 声明式UI (what to do) what to do 也许有人会说Data Binding不是可以让XML自己"动"起来吗?没有错&#xff0c;Data Binding其实就是Compose诞生之前的一种声明式U方案&#xff0c;谷歌曾…...

友力科技IDC机房搬迁方案流程分享

机房搬迁流程 系统搬迁实施流程包括&#xff1a;准备、拆卸、装运、安装、调试等五个流程&#xff0c;具体如下&#xff1a; 准备:包括相关人员和设备准备、新机房环境准备、网络环境、备份、现场所有设备打标签、模块、设备准备等准备工作。拆卸&#xff1a;主要只核心设备下…...

仿迪恩城市门户分类信息网discuz模板

Discuz x3.3模板 仿迪恩城市门户分类信息网 (GBK) Discuz模板 仿迪恩城市门户分类信息网(GBK)...

Windows 注册表是什么?如何备份注册表?

Windows注册表&#xff08;Windows Registry&#xff09;是微软Windows操作系统中的一个重要组件&#xff0c;用于存储系统和应用程序的配置信息和选项。下面就给大家详细讲解一下什么是注册表。 注册表的概念 Windows 注册表是一个集中管理的数据库&#xff0c;存储了系统、…...

B+树与索引解析

文章目录 B树与索引简介几个关键点应用案例场景描述索引创建查询操作更新操作并发处理 Python代码示例 B树与索引简介 B树是一种在计算机科学中广泛使用的自平衡的树数据结构&#xff0c;它能保持数据排序&#xff0c;并且搜索、插入和删除操作的时间复杂度都是O(log n)。B树被…...

华为认证hcna题库背诵技巧有哪些?hcna和hcia有什么区别?

大家都知道华为认证hcna是有题库供考生刷题备考的&#xff0c;但题库中海量的题目想要在短时间背诵下来可并不是一件容易的事情&#xff0c;这就需要我们掌握一定的技巧才行。华为认证hcna题库背诵技巧有哪些? hcna和hcna这二者又有什么区别呢?今天的文章将为大家进行详细解…...

【常用报文状态码】

常见的报文状态码如下 200 OK&#xff1a;客户端请求成功。 301 Moved Permanently&#xff1a;表示请求的资源已经被永久移动到了新的URL上&#xff1b; 302 Found&#xff1a;表示请求的资源已经被临时移动到了新的URL上&#xff1b; 304 Not Modified&#xff1a;表示客户…...

Linux命令详解

1.目录结构 2.history游览历史 3.命令行中的ctrl组合键 4.列出目录的内容 5.修改文件权限chmod 6.文件内容查看 文件管理 7.输出重定向&#xff1a;> 8.管道&#xff1a;| 9.清屏&#xff1a;clear 10.显示当前路径&#xff1a;pwd 11.创建目录&#xff1a;mkdir…...

在阿里云使用Docker部署MySQL服务,并且通过IDEA进行连接

阿里云使用Docker部署MySQL服务&#xff0c;并且通过IDEA进行连接 这里演示如何使用阿里云来进行MySQL的部署&#xff0c;系统使用的是Linux系统 (Ubuntu)。 为什么使用Docker? 首先是因为它的可移植性可以在任何有Docker环境的系统上运行应用&#xff0c;避免了在不通操作系…...

Spring Boot中的国际化(i18n)实现技巧

Spring Boot中的国际化&#xff08;i18n&#xff09;实现技巧 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;在开发多语言支持的应用程序时&#xff0c;国际化…...

vite-ts-cesium项目集成mars3d修改相关的包和配置参考

如果vite技术栈下使用原生cesium&#xff0c;请参考下面文件的包和配置修改&#xff0c;想用原生创建的viewer结合我们mars3d的功能的话。 1. package.json文件 "dependencies": {"cesium": "^1.103.0","mars3d": "^3.7.18&quo…...

「树莓派入门」树莓派基础04-VNC连接与配置静态IP

一、VNC连接配置 1. 启用VNC服务 在树莓派上&#xff0c;通过 raspi-config 工具启用VNC服务&#xff1a; sudo raspi-config在配置界面中选择 “Interfacing Options”&#xff0c;然后选择 “VNC” 并启用它。 2. 连接到VNC服务器 在电脑端安装VNC客户端&#xff0c;如V…...

JAVA编程题期末题库【中】

8.计算邮资 程序代码: public static void main(String[] args) {// 计算邮资//if多分支语句//创建对象java.util.Scanner inputnew java.util.Scanner(System.in); //提示输入用户&#xff0c;输入邮件的重量System.out.println("邮件的重量&#xff1a;");int wei…...

【十年JAVA搬砖路】——MYSQL备份使用mysqldump

使用mysqldump 备份 1.创建备份脚本 cat <<EOF > sqlback.sh source ~/.bashrc NLS_DATE_FORMAT"yyyy-mm-dd HH24:MI:SS"; export NLS_DATE_FORMAT NLS_LANGAMERICAN_AMERICA.ZHS16GBK;export NLS_LANGbackuptimedate %Y%m%d%H%M%S /usr/bin/mysqldump -u…...

MetaGPT全面安装与配置指南

文章目录 MetaGPT环境配置1.1 检查Python版本1.2 拉取MetaGPT仓库1.3 拉取源码本地安装1.4 MetaGPT安装成果全流程展示1.5 尝试简单使用 MetaGPT的API调用2.1 本地部署大模型尝试安装必要的依赖下载并配置大模型配置API服务 2.2 讯飞星火API调用获取API密钥安装讯飞星火SDK调用…...

云计算期末综合测试题

云计算综合测试题 单选题填空题判断题简答题 单选题 这里选择题&#xff0c;直接以填空题展示&#xff0c;并给出解析 Bigtable是&#xff08;Google&#xff09;开发的分布式存储系统 解析&#xff1a;分布式结构化数据表Bigtable是Google基于GFS和Chubby开发的分布式存储系统…...

vue3-cropperjs图片裁剪工具-用户上传图片截取-(含预览视频)

效果图 上传图片弹窗预览 对于这个上传图片样式可以参考 官方原代码 官网传送入口 Upload 上传 | Element Plus (element-plus.org) <template><el-uploadclass"upload-demo"dragaction"https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6…...

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第48课-可视化控制机器人

【WEB前端2024】3D智体编程&#xff1a;乔布斯3D纪念馆-第48课-可视化控制机器人 使用dtns.network德塔世界&#xff08;开源的智体世界引擎&#xff09;&#xff0c;策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界引…...

Prisma与GraphQL游标分页实战:基于Relay规范的高性能实现

1. 项目概述与核心价值如果你正在用 Prisma 和 GraphQL 构建后端服务&#xff0c;并且需要实现一个高性能、体验流畅的分页功能&#xff0c;那么zoontek/prisma-cursor-pagination这个库很可能就是你一直在找的“瑞士军刀”。分页&#xff0c;尤其是基于游标的分页&#xff0c;…...

2026金铲铲之战电脑版模拟器实测:选对模拟器轻松上分

一、实测前提说明作为拥有三年游玩经验的金铲铲之战老弈士&#xff0c;从手机端切换到电脑端游玩后&#xff0c;大屏在阵容运营、棋子对位、选秀博弈上的优势十分突出&#xff1a;手机小屏不仅看不清棋子星级、装备细节&#xff0c;频繁触屏操作还容易误触卖错棋子、放错站位&a…...

毕业设计:基于SpringBoot+Vue大学生租房平台 (源码)

目录 一、项目背景 二、技术介绍 三、功能介绍 四、代码设计 五、系统实现 一、项目背景 近年来&#xff0c;随着我国高等教育事业的持续发展&#xff0c;在校大学生及刚步入社会的毕业生数量逐年攀升。据统计&#xff0c;2024年全国高校毕业生规模已突破1100万人&#x…...

喜马拉雅音频离线收藏:这款跨平台下载器如何帮你永久保存付费内容?

喜马拉雅音频离线收藏&#xff1a;这款跨平台下载器如何帮你永久保存付费内容&#xff1f; 【免费下载链接】xmly-downloader-qt5 喜马拉雅FM专辑下载器. 支持VIP与付费专辑. 使用GoQt5编写(Not Qt Binding). 项目地址: https://gitcode.com/gh_mirrors/xm/xmly-downloader-q…...

欢迎来到Marp世界

欢迎来到Marp世界 【免费下载链接】marp The entrance repository of Markdown presentation ecosystem 项目地址: https://gitcode.com/gh_mirrors/mar/marp 用Markdown创建专业演示文稿从未如此简单&#xff01; 第二张幻灯片 列表项1列表项2列表项3 第三张幻灯片&am…...

共筑智能传播信息安全域,新华社国家重点实验室与北京时光不语达成合作

新华社媒体融合生产技术与系统国家重点实验室与北京时光不语科技有限公司&#xff08;TIMUS.AI&#xff09;正式建立研发生态伙伴关系&#xff0c;并联合推出面向智能传播环境的“新华智信感知平台”&#xff0c;深化智能传播领域科研创新与成果转化&#xff0c;共同构建负责任…...

VR大空间项目屡获行业大奖,AI数字人公司赋能文旅智慧升级

在经历了早期的概念普及和单点试验后&#xff0c;AI数字人、VR、MR等技术正在文旅行业完成从“尝鲜”到“刚需”的蜕变。不再仅仅是博物馆或景区里的一块互动屏幕&#xff0c;而是一套能够重塑服务流程、活化文化IP、创造全新消费场景的完整解决方案。从边疆秘境到城市地标&…...

【DeepSeek开发者垂直搜索实战指南】:3大行业落地案例+5个避坑要点,限时公开内部调优参数

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;DeepSeek开发者垂直搜索应用案例全景概览 DeepSeek系列大模型凭借其开源、高性能与强推理能力&#xff0c;正被广泛集成至开发者垂直搜索场景中——从代码片段检索、API文档语义查找&#xff0c;到私有…...

Windows运行Android应用终极指南:APK Installer让你的电脑秒变安卓手机

Windows运行Android应用终极指南&#xff1a;APK Installer让你的电脑秒变安卓手机 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在移动应用生态日益丰富的今天&…...

电源设计和效率优化案例C01

本文重点讲清楚三个非常重要的问题: 手把手教会计算电源的效率计算,包括线性电源和开关电源等 1-电源的上下管的 Qg和Rdson为什么是一对矛盾量? 2-单相30A的电流输出电源要求,对上下管子应该如何取舍这两个参数,为什么? 电源设计是硬件设计的核心组成部分,尤其事目前…...