leetcode 刷题:198打家劫舍740删除并获得点数 - 动态规划

【动态规划之构造dp数组】———LeetCode740 删除并获得点数(打家截舍升级版) 给你一个整数数组 nums ,你可以对它进行一些操作。 每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除 所有 等于 nums[i] - 1 和 nums[i] + 1 的元素。 开始你拥有 0 个点数。返回你能通过这些操作获得的最大点数。 示例 1: 输入:nums = [3,4,2] 输出:6 解释: 删除 4 获得 4 个点数,因此 3 也被删除。 之后,删除 2 获得 2 个点数。总共获得 6 个点数。 示例 2: 输入:nums = [2,2 阅读详情

198打家劫舍

解法一:

class Solution {
    public int rob(int[] nums) {
        if(nums.length==1) {
            return nums[0];
        } 
        if(nums.length==2) {
            return Math.max(nums[0],nums[1]);
        } 
        int[] values = new int[nums.length];
        values[0] = nums[0];
        values[1] = nums[1];
        values[2] = nums[0] + nums[2];
        for(int i= 3;i<nums.length;i++) {
             values[i] = Math.max(values[i-3],values[i-2])+ nums[i];
        }
        return Math.max(values[nums.length-2],values[nums.length-1]);
    }
}

int[i] values :从头开始到包含nums i 的最大值
values[i] = Math.max(values[i-3],values[i-2])+ nums[i];// i-1不能选,考虑i-2和i-3两种情况就行,i-4和话可以加上nums[i-2]获得更大的值
Math.max(values[nums.length-2],values[nums.length-1]);//最后答案分为两种情况,包含num[length-1]和不包含num[length-1],两者取最大值。

官方解法:

class Solution {
    public int rob(int[] nums) {
        if(nums.length==1) {
            return nums[0];
        } 
        // if(nums.length==2) {
        //     return Math.max(nums[0],nums[1]);
        // } 
        int[] dp = new int[nums.length];
        dp[0] = nums[0];
        dp[1] = Math.max(nums[0],nums[1]);
        for(int i= 2;i<nums.length;i++) {
             //dp[i] = Math.max(dp[i-1]+nums[i],dp[i-1]);
             dp[i] = Math.max(dp[i-2]+nums[i],dp[i-1]);
        }
        return dp[nums.length-1];
    }
}

int[i] values :从头开始到nums i 的最大值,分两种情况不包含nums i-1和包含(包含nums i 和不包含):
dp[i] = Math.max(dp[i-2]+nums[i],dp[i-1]);。

class Solution:
    def rob(self, nums: List[int]) -> int:
        #dpn表示前n个数组盗窃获得的最大金额
        dp = [0]*(len(nums)+1)
        dp[1] = nums[0]
        for i in range(2,len(nums)+1):
            dp[i] = max(dp[i-1],dp[i-2]+nums[i-1])    
        return dp[-1]    

740删除并获得点数【打家劫舍又来了/预处理数组版打家劫舍】

class Solution {
    public int deleteAndEarn(int[] nums) {
        if(nums.length==1) {
            return nums[0];
        }
        int maxValue = nums[0];
        for(int i=1;i<nums.length;i++) {
            if(nums[i]>maxValue) {
                maxValue=nums[i];
            }
        }
        int[] arr = new int[maxValue+1];
        for(int i=0;i<nums.length;i++) {
             arr[nums[i]] += nums[i];
        } 
        return rob(arr);
    }

    public int rob(int[] nums) {
        if(nums.length==1) {
            return nums[0];
        } 
        int[] dp = new int[nums.length];
        dp[0] = nums[0];
        dp[1] = Math.max(nums[0],nums[1]);
        for(int i= 2;i<nums.length;i++) {
             dp[i] = Math.max(dp[i-2]+nums[i],dp[i-1]);
        }
        return dp[nums.length-1];
    }
}
AI Agent ReAct架构设计模型剖析 ReAct通过"思考-行动-观察"循环运作:智能体先进行自然语言推理,再调用外部工具执行行动,观察结果后继续推理直至解决问题。这种架构提高了透明度和准确性,减少幻觉风险,使LLM能主动分解任务并利用外部数据源。实现关键在于精心设计的提示模板,引导LLM按结构化格式响应,而非依赖模型固有能力。 阅读详情

相关推荐

蚁群算法(Ant Colony Optimization,ACO)讲解+代码实现

通常情况下,较优的解对应的路径上的信息素会被加强,而较差解对应的信息素则会减少或蒸发。的化学物质,这种物质会在蚂蚁走过的路径上留下痕迹,后续的蚂蚁会根据这些信息素的浓度来选择路径,从而形成一条从蚁巢到食物源的。在求解TSP蚁群算法中,每只蚂蚁相互独立,用于构造不同的路线,蚂蚁之间通过信息素进行交流,合作求解。的过程,该路段经过的蚂蚁越多,信息素留下的就越多,浓度越高,更多的蚂蚁都会选择这个路段。需要注意的是,蚁群算法是一种。(6)计算每只蚂蚁的总距离:遍历每只蚂蚁的路线,累加经过的城市之间的距离。

m0_73804764的博客 1万+

LeetCode动态规划篇:经典打家劫舍问题

经典动态规划题

玦尘的博客 2002

基于STM32F4的NRF24L01驱动程序

基于STM32F4xx的NRF24L01驱动程序 提示:硬件平台基于STM32F427VIT6、NRF24L01模块 文章目录基于STM32F4xx的NRF24L01驱动程序前言一、NRF24L01简单介绍1,什么是NRF24L012,NRF24L01通信方法3,NRF24L01通信原理4,地址分配&通道分配问题二、STM32CubeMX配置三、添加底层文件1,添加.c/.h文件到工程中2,使用说明四,下载 前言 提示:本例程采用STM32CubeMX配置底层,采用硬件SPI方式驱动NRF24

qq_43603289的博客 2813

LeetCode每日一题 删除并获得点数 / 打家劫舍系列 动态规划

740. 删除并获得点数 语言:java 难度:中等 题目内容 给你一个整数数组 nums ,你可以对它进行一些操作。 每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除 所有 等于 nums[i] - 1 和 nums[i] + 1 的元素。 开始你拥有 0 个点数。返回你能通过这些操作获得的最大点数。 解题思路 这一题呢,开始想的是先求和,把每个数字的和求出来然后再进行计算,我还在想构造一个树出来,其实想了半天也没往动态规划上面想,因为选择第一个数以后,

ChasingSunny的博客 326

ROS2新手必看:5分钟搞定Gazebo机器人仿真环境搭建(含避坑指南)

本文为ROS2新手提供了在Gazebo中快速搭建机器人仿真环境的详细指南。内容涵盖ROS2与Gazebo的协同架构理解、基础环境配置、机器人模型构建、传感器集成以及环境创建,并包含实用的避坑指南和调试技巧,帮助开发者高效掌握物理仿真技术。

weixin_29100927的博客 430

STM32驱动SPL06-001气压传感器:I2C通信与温度补偿实战

气压传感器在无人机定高、室内定位和气象监测中至关重要。SPL06-001凭借±0.06 hPa相对精度和I2C接口,成为STM32项目的理想选择。通过I2C总线读取原始数据,并利用出厂校准系数进行温度补偿和气压解算,可输出高精度气压值。本文详细解析SPL06-001的寄存器操作、校准系数拼接及补偿算法,并分享I2C上拉电阻、地址配置等避坑经验,帮助开发者快速实现气压测量与高度解算。

weixin_29188043的博客 339

算法46:动态规划专练(力扣198: 打家劫舍 力扣740:删除并获取点数)

动态规划

街头小瘪三的专栏 743

BES (恒玄)HFP通话笔记

1.audio_developer 调试:SDK 需要打开某个算法,需要原厂打开对应宏定义编译出新的SDK,只要涉及到lib库里的功能都需要原厂手动修改编译。开发商和原厂FAE做起来都会比较累。如果没有原厂支持根本没法做,很少文档,SDK也很多问题,没法开箱即用如果要支持audio_developer上位机调试,还需改代码,如果对整个原理不清楚就没法做,没文档只能啃代码调试工具设计的也有待加强,串口通讯调试对耳机这类产品非常麻烦,本来板子就不大,还要焊接一堆线,调试还要拖着串口线。

飞天鱼 686

动态规划 —— 打家劫舍问题及其变式总结

除了爬楼梯类问题外,入门DP的另一大类即是打家劫舍问题。题单⬆️(0x3F总结版,特别鸣谢)

2402_86720949的博客 1285

OptiSystem仿真:波分与时分复用混合光网络的设计与性能优化

本文详细介绍了如何利用OptiSystem软件设计与优化波分复用与时分复用混合光网络。通过构建四路波分乘以四路时分的系统模型,文章阐述了从信源生成、复用合并、光纤传输到信号解复用与性能评估的全流程,并重点探讨了对抗色散、优化器件参数及探索高级调制格式等核心性能优化策略,为应对未来海量数据需求提供了高效、可行的仿真解决方案。

pink的博客 1106

如何使用 Python 爬取 58 同城招聘信息

职位名称:招聘的岗位名称,如“前端开发”、“数据分析师”等。公司名称:招聘公司的名称。薪资待遇:职位的薪资范围,通常以“面议”、“10k-20k”这样的形式表示。工作地点:公司所在的城市及具体地址。公司福利:例如五险一金、带薪年假、绩效奖金等。发布时间:职位信息的发布时间。一个典型的招聘页面 URL 格式通常如下:在这个页面上,职位信息会分页展示,爬虫需要模拟翻页,获取多个页面的招聘信息。

2201_76125261的博客 1291

Leetcode.740 删除并获得点数

之后,再次删除 3 获得 3 个点数,再次删除 3 获得 3 个点数。删除 3 获得 3 个点数,接着要删除两个 2 和 4。之后,删除 2 获得 2 个点数。总共获得 6 个点数。删除 4 获得 4 个点数,因此 3 也被删除。返回你能通过这些操作获得的最大点数。输入:nums = [2,2,3,3,3,4]输入:nums = [3,4,2],你可以对它进行一些操作。每次操作中,选择任意一个。,那么所能获得的点数就为。总共获得 9 个点数。所以这个实际上是一个。

感觉画质不如...原神的博客 344

全景相机APP

以下是一款**全景相机APP**的完整源码,支持全景照片拍摄(多帧拼接)、全景预览、鱼眼矫正、图片保存/分享、360°全景查看等核心功能,基于Android原生Camera2 API(替代过时的Camera API) + OpenCV(图像拼接) + GLSurfaceView(全景预览)实现,适配Android 8.0+设备,可直接编译运行。runOnUiThread(() -> tvFrameCount.setText("已拍摄:" + frameCount + "帧"));// X轴旋转(上下)

寒寒豆豆软件公司的博客 180

Offer必备算法15_简单多问题dp_八道力扣题(打家劫舍+买卖股票)

Offer必备算法15_简单多问题dp_八道力扣题(打家劫舍类型和买卖股票类型)( ①力扣LCR 089. 打家劫舍+②力扣213. 打家劫舍 II+③力扣740. 删除并获得点数+④力扣LCR 091. 粉刷房子+⑤力扣309. 买卖股票的最佳时机含冷冻期+⑥力扣714. 买卖股票的最佳时机含手续费+⑦力扣123. 买卖股票的最佳时机 III+⑧力扣188. 买卖股票的最佳时机 IV)

参考书籍:《C语言程序设计》《数据结构》《C++ Primer》《Effective C++》《STL源码剖析》《现代操作系统》《UNIX环境高级编程》《图解TCP/IP》《图解HTTP》《Linux高性能服务器编程》《剑指Offer》《算法导论》 2286

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Leetcode 198. 打家劫舍 &740. 删除并获得点数 [中等]

两题的思路相似,均使用动态规划来解题。 198. 打家劫舍 题目: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/house-robber...

weixin_46065450的博客 145

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【LeetCode 动态规划专项】删除并获得点数(740)

【LeetCode 动态规划专项】删除并获得点数(740)

weixin_37780776的博客 295

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

[动态规划中等题] LeetCode 198. 打家劫舍 740. 删除并获得点数

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你不触动警报装置的情况下,一夜之内能够偷窃到的最高金额。[1,2,3,1]4解释偷窃1号房屋(金额=1),然后偷窃3号房屋(金额=3)。偷窃到的最高金额=1+3=4。12解释偷窃1号房屋(金额=2),偷窃3号房屋(金额=.........

负负得正的博客 197

LeetCode 740. 删除并获得点数

一、题意 给你一个整数数组 nums ,每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除所有等于 nums[i] - 1和 nums[i] + 1的元素。开始你拥有 0 个点数。返回你能通过这些操作获得的最大点数。 1<=nums.length<=2∗1041 <= nums.length <= 2*10^41<=nums.length<=2∗104 1<=nums[i]<=1041 <= nums[i]

Genius_J的博客 3929

力扣740. 删除并获得点数

740. 删除并获得点数 题目描述 给你一个整数数组 nums ,你可以对它进行一些操作。 每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除 所有 等于 nums[i] - 1 和 nums[i] + 1 的元素。 开始你拥有 0 个点数。返回你能通过这些操作获得的最大点数。 示例 1: 输入:nums = [3,4,2] 输出:6 解释: 删除 4 获得 4 个点数,因此 3 也被删除。 之后,删除 2 获得 2 个点数。总共获得 6 个点数。 示例

菜根檀的博客 342

力扣:打家劫舍 I & 变形题

题目描述 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 力扣:198. 打家劫舍 输入:[2,7,9,3,1] 输出:12 解释:偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。 偷窃到的最高

ZhangyiA的博客 297

动态规划之打家劫舍模型

根据灵茶山艾府的题单整理动态规划中的打家劫舍模型。

YGGP的博客 1104

740. 删除并获得点数

地址: 力扣https://leetcode-cn.com/problems/delete-and-earn/ 题目: 给你一个整数数组nums,你可以对它进行一些操作。 每次操作中,选择任意一个nums[i],删除它并获得nums[i]的点数。之后,你必须删除 所有 等于nums[i] - 1 和 nums[i] + 1的元素。 开始你拥有 0 个点数。返回你能通过这些操作获得的最大点数。 示例 1: 输入:nums = [3,4,2] 输出:6 解释: ...

mrbone9的博客 633

LeetCode740. 删除并获得点数(java/c++动态规划)

740. 删除并获得点数(动态规划) 链接:https://leetcode-cn.com/problems/delete-and-earn/solution/javadong-tai-gui-hua-100da-jia-jie-she-b-n5o7/ 解题思路 没做过打家劫舍的可以先做做198.打家劫舍 创建一个新数组count,对nums[i]计数,将这个题转换为打家劫舍的思路 推导公式为 dp[i] = Math.max(dp[i-1], dp[i-2]+count[i]*i); 代码: class

weixin_46100881的博客 1569

LeetCode刷题笔记-动态规划-day3

文章目录LeetCode刷题笔记-动态规划-day3198. 打家劫舍1.题目2.解题思路3.代码213. 打家劫舍 II1.题目2.解题思路3.代码740. 删除并获得点数1.题目2.解题思路3.代码 LeetCode刷题笔记-动态规划-day3 198. 打家劫舍 1.题目 原题链接:198. 打家劫舍 2.解题思路 我们可以用f[i]表示小偷走到第i个房间偷的总金额,可以分两种情况: 小偷不选第i个房间的现金,那么f[i]=f[i-1]; 小偷选择偷第i个房间的现金,因为不能选择连续的房间,所

小皮皮LL的博客 635

动态规划-打家劫舍类问题

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。之后,删除 2 获得 2 个点数。总共获得 6 个点数。偷窃到的最高金额 = 1 + 3 = 4。给定一个代表每个房屋存放金额的非负整数数组,计算你。删除 4 获得 4 个点数,因此 3 也被删除。返回你能通过这些操作获得的最大点数。,一夜之内能够偷窃到的最高金额。,你可以对它进行一些操作。

m0_47411815的博客 666

动态规划--Day04--打家劫舍--740. 删除并获得点数,3186. 施咒的最大总伤害,2140. 解决智力问题

动态规划–Day04–打家劫舍–740. 删除并获得点数,3186. 施咒的最大总伤害,2140. 解决智力问题 今天要训练的题目类型是:【打家劫舍】,题单来自@灵艾山茶府。 掌握动态规划(DP)是没有捷径的,咱们唯一能做的,就是投入时间猛猛刷题。 动态规划要至少刷100道才算入门! 记忆化搜索是新手村神器。方便理解,写完之后可以转译成递推。 但是有些题目只能写递推,才能优化时间复杂度。熟练之后直接写递推也可以。

m0_60740070的博客 1034
上一篇: Windows CMD 窗口进入程序后输入信息不回显
下一篇: DTD实体定义中的百分号是什么意思?
wc88
博客等级 码龄8年 39粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值