代码随想录算法训练营 | 198.打家劫舍,213.打家劫舍II,337.打家劫舍III

news/2024/10/13 19:57:47

198.打家劫舍
题目链接:198.打家劫舍
文档讲解︰代码随想录(programmercarl.com)
视频讲解︰打家劫舍
日期:2024-10-13

想法:dp[i]到第i个房子时能偷的最多的钱;递推公式:是上上一栋房子的dp[i - 2]加上这栋房子的钱nums[i]大还是上一家邻居偷的钱dp[i - 1]的大;初始化因为有i - 2;所以初始化dp[0]和dp[1];顺序,从前往后;打印。
Java代码如下:

class Solution {public int rob(int[] nums) {if(nums.length == 0) return 0;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 - 1], dp[i - 2] + nums[i]);}return dp[nums.length - 1];}
}

213.打家劫舍II
题目链接:213.打家劫舍II
文档讲解︰代码随想录(programmercarl.com)
视频讲解︰打家劫舍II
日期:2024-10-13

想法:因为首尾相连,所以nums得分两种情况,要头不要尾和要尾不要头,rob1(nums, 0, nums.length - 2)和rob1(nums, 1, nums.length - 1)这两种,注意start = end的时候要返回nums[start]
Java代码如下:

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

337.打家劫舍III
题目链接:337.打家劫舍III
文档讲解︰代码随想录(programmercarl.com)
视频讲解︰打家劫舍III
日期:2024-10-13

想法:dp[0]表示不抢当前节点的最大钱,dp[1]为抢,后序遍历。
Java代码如下:

class Solution {public int rob(TreeNode root) {int[] dp = rob1(root);return Math.max(dp[0], dp[1]);}public int[] rob1(TreeNode root) {int[] dp = new int[2];if(root == null) return dp;int[] left = rob1(root.left);int[] right = rob1(root.right);dp[0] = Math.max(left[0], left[1]) + Math.max(right[0], right[1]);dp[1] = root.val + left[0] + right[0];return dp;}
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

基于VL812芯片的USB 3.0Hub设计

前言(设计初衷) 由于自己笔记本插接口不多,在网上购买了一款USB扩展坞,但平时要往返宿舍和工位,书包要放课本、笔记本等,不想再增加重量就动手搞一个放工位上方便。自己动手,丰衣足食(哈哈哈哈其实是自己不想包里放太多东西,同时也想练练画板),接下来就开始进入我们…

LLM中词向量的表示和词嵌入的一些疑问

LLM中词向量的表示和词嵌入的一些疑问 词向量的一些特点 在3blue1brown的视频【官方双语】GPT是什么?直观解释Transformer | 深度学习第5章_哔哩哔哩_bilibili中, 在15min左右介绍了LLM的词嵌入的过程. 其中提到mother的词向量减去father的词向量, 会近似于women的词向量-man的…

2024-2025-1 20241304 《计算机基础与程序设计》第3周学习总结

2024-2025-1 20241304 《计算机基础与程序设计》第3周学习总结 作业信息这个作业属于哪个课程 <[2024-2025-1-计算机基础与程序设计](https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP>)这个作业要求在哪里 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK0…

DrawPad 离线注册

DrawPad 离线注册 目录DrawPad 离线注册reg_dialog_549414parpms==>callbackreg_5486C3do_reg_5489A4check_key_547842calc_idkey_54AB37calc_54A9A5transform_54A8FFpy 仅分析离线注册,联网时注册会有网络校验regcheck reg_dialog_549414 定位注册对话框 char __stdcall…

2024-2025-1 20241415 《计算机基础与程序设计》第三周学习总结

2024-2025-1 20241415 《计算机基础与程序设计》第三周学习总结 作业信息这个作业属于哪个课程 <班级的链接>(2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 <作业要求的链接>(2024-2025-1计算机基础与程序设计第一周作业)这个作业的目标 <温习巩固本…

视野修炼-技术周刊第105期 | AI驱动全栈应用开发

① bolt - AI驱动一站式的应用开发 ② WebChat - 同网页在线聊天 ③ 一年一度的 js13kGames结果公布 - 13KB 大小的游戏 ④ 新的 CSS logo? ⑤ TS 类型体操练习 ⑥ 100+ 免费独特的 SVG 图标 ⑦ TutorialKit - 交互式教程创建欢迎来到第 105 期的【视野修炼 - 技术周刊】,下面…

Centos7---k8s集群 20241013

目录一、硬件准备(虚拟主机) 二、环境准备1、所有机器关闭防火墙 2、所有机器关闭selinux 3、所有机器关闭swap 4、所有机器上添加主机名与ip的对应关系 5、在所有主机上将桥接的ipv4流量传递到iptables的链三、为所有节点安装docker 四、集群部署1、为所有节点修改仓库,安装…

rsa基本攻击手法总结大全(还在更新中)

一些关于分解n的常用手法: 1.最简单的就是直接使用yafu分解 2.费马分解然后我们令p=a+b,q=a-b,此时n=\(a^{2}-b^{2}\),那么\(b^2=a^2-n\),那么\(b=\sqrt{a^2-n}\),我们就让a=\(\sqrt{n}\)开始然后慢慢加1开始遍历,直到找到能够使得\(a^2-n\)能够为一个平方数即可得到我们的b…