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

198.打家劫舍,213.打家劫舍II,337.打家劫舍III

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

  • 198.打家劫舍
    • 文章
    • 思路
    • 代码
  • 213.打家劫舍III
    • 文章
    • 思路
    • 代码
  • 337.打家劫舍III
    • 文章
    • 思路
    • 代码
  • 总结

198.打家劫舍

文章

代码随想录|0198.打家劫舍

思路

d p [ i ] = M a x ( d p [ i − 1 ] , d p [ i − 2 ] + n u m s [ i ] ) dp[i]=Max(dp[i-1],dp[i-2]+nums[i]) dp[i]=Max(dp[i1],dp[i2]+nums[i])

代码

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

213.打家劫舍III

文章

213.打家劫舍II

思路

在[0, n-1]范围内dp一次,在[1, n]范围内dp一次,取二者最大值

代码

class Solution {public int rob(int[] nums) {int i, n;n = nums.length;if (n == 1) {return nums[0];}if (n == 2) {return nums[1] > nums[0] ? nums[1] : nums[0];}int[] dp0 = new int[n - 1];dp0[0] = nums[0];dp0[1] = nums[1] > nums[0] ? nums[1] : nums[0];int[] dp1 = new int[n - 1];dp1[0] = nums[1];dp1[1] = nums[2] > nums[1] ? nums[2] : nums[1];for (i = 2; i < n - 1; ++i) {dp0[i] = Math.max(dp0[i - 1], dp0[i - 2] + nums[i]);dp1[i] = Math.max(dp1[i - 1], dp1[i - 2] + nums[i +1]);}return Math.max(dp0[n - 2], dp1[n - 2]);}
}

337.打家劫舍III

文章

代码随想录|0337.打家劫舍III

思路

劫不劫某个节点取决于其两个子节点有没有被劫,所以是后续遍历,递归每一层返回是否劫那个节点的两种情况

代码

class Solution {public int rob(TreeNode root) {TreeNode dummy = new TreeNode(0);dummy.right = root;return dfs(dummy)[0];}public int[] dfs(TreeNode node) {if (node == null) {return new int[] {0, 0};}int[] leftVal = dfs(node.left);int[] rightVal = dfs(node.right);int[] res = new int[2];res[0] = Math.max(leftVal[0], leftVal[1]) + Math.max(rightVal[0], rightVal[1]);res[1] = leftVal[0] + rightVal[0] + node.val;return res;}
}

总结

这三道题都是二刷了,思路明确
但是上上周笔试人家出的题目是打家劫舍IV。。。。我并没有做出来,等下去研究研究再说

http://www.lryc.cn/news/166457.html

相关文章:

  • msvcp140.dll是什么东西,如何解决msvcp140.dll丢失的问题的方法分享
  • 音视频 SDL vs2017配置
  • 前端面试要点
  • shell字符串处理之字符串比较
  • 怎么获取别人店铺的商品呢?
  • 【数据结构】二叉树的链式结构
  • 模拟实现C语言--strlen函数
  • Spring Boot + Vue的网上商城之物流系统实现
  • 释放数据价值这道难题,Smartbi V11有解
  • Day_14 > 指针进阶(3)> bubble函数
  • sql中怎么查books表下面的内容
  • Vulnhub系列靶机---HarryPotter-Aragog-1.0.2哈利波特系列靶机-1
  • .NET 8发布首个RC,比.NET 7的超级快更快
  • 在 Substance Painter中自定义Shader
  • 【自学开发之旅】Flask-restful-Jinjia页面编写template-回顾(五)
  • input 的 placeholder 样式
  • 4.4-Spring源码循环依赖终极讲解
  • 腾讯云4核8G服务器选CVM还是轻量比较好?价格对比
  • 数学实验-素数(Mathematica实现)
  • Vue3样式绑定
  • 【深度学习】 Python 和 NumPy 系列教程(廿二):Matplotlib详解:2、3d绘图类型(8)3D饼图(3D Pie Chart)
  • 数仓主题域和数据域、雪花模型,星型模型和星座模型
  • 黑马头条 热点文章实时计算、kafkaStream
  • 数据分析:利用gpt进行归因分析
  • Python工程师Java之路(p)Module和Package
  • 某计费管理系统任意文件读取漏洞
  • LeetCode:1929.数组串联
  • 记录:移动设备软件开发(activity组件)
  • Redis常用应用场景
  • grafana 监控无图解决