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

江西通威公路建设集团有限公司网站专业建站网站服务

江西通威公路建设集团有限公司网站,专业建站网站服务,创建站点的基本步骤,北京学电脑的培训机构198. 打家劫舍 🔗:198. 打家劫舍 - 力扣(LeetCode)思路:比较简单的动态规划。 一开始没考虑到【2,1,1,2】这种情况应该怎么处理,对于amount[1]的初始化有些问题 代码&am…

198. 打家劫舍

  • 🔗:198. 打家劫舍 - 力扣(LeetCode)
  • 思路:比较简单的动态规划。
    • 一开始没考虑到【2,1,1,2】这种情况应该怎么处理,对于amount[1]的初始化有些问题
  • 代码:
class Solution {public int rob(int[] nums) {//if(nums.length==1) return nums[0]; int[] amount = new int[nums.length];amount[0] = nums[0];// 初始化 amount【1】出错amount[1] = Math.max(nums[0],nums[1]);for(int i=2; i<nums.length; i++){amount[i] = Math.max(amount[i-2]+nums[i],amount[i-1]);}return amount[nums.length-1];}
}

213.打家劫舍II

  • 🔗:213. 打家劫舍 II - 力扣(LeetCode)
  • 思路:
    • 分类讨论,一开始想到了考虑打劫第一个和不打劫第一个需要分开来考虑。但是始终想把他们俩合并到一起考虑,没有想到办法,最后发现实际上官方题解就是用分类的方式。
    • 写的没有官方题解简洁,可以抽象成同一个方法来调用。
  • 代码:
class Solution {public int rob(int[] nums) {int[] amount = new int[nums.length];// 长度为1、2的情况amount[0] = nums[0];if(nums.length==1) return amount[0];amount[1] = Math.max(nums[0],nums[1]);if(nums.length==2) return amount[1];// case1:打劫第一间房for(int i=2; i<nums.length-1; i++){amount[i] = Math.max(nums[i]+amount[i-2],amount[i-1]);}//1+3=4int case1amount = amount[nums.length-2];// case2: 不打劫第一间房amount[1] = nums[1];amount[2] = Math.max(nums[1],nums[2]);for(int i=3; i<nums.length; i++){amount[i] = Math.max(nums[i]+amount[i-2],amount[i-1]);}int case2amount = amount[nums.length-1];return Math.max(case1amount,case2amount);} 
}

337.打家劫舍III

  • 🔗:337. 打家劫舍 III - 力扣(LeetCode)
  • 思路:
    • 非常巧妙的思路。一开始自己写的没有通过第60个用例,没有考虑到【2,1,1,2】这种情况,反了和今日第一题一样的问题,后来照着官方题解的写了一下。
    • 节点可以有两个状态:selected & not selected
      • select:则左右子节点均不能被选择
      • not selected:左右子节点可以被选择,也可以不被选择
  • 代码:
class Solution {public int rob(TreeNode root) {int[] rootStatus = traverse(root);return Math.max(rootStatus[0], rootStatus[1]);}public int[] traverse(TreeNode root){if(root==null)return new int[]{0,0};int[] l = traverse(root.left);int[] r = traverse(root.right);// 当node被选中时,left和right一定不被选中// 所以selected = node的值+left&right不被选中的值int selected = root.val + l[1]+r[1];// 当node不被选中时,left和right可以被选中,也可以不被选中// 因此选取他们的最大值int notSelected = Math.max(l[0],l[1])+Math.max(r[0],r[1]);return new int[]{selected,notSelected};}
}

http://www.dtcms.com/wzjs/821102.html

相关文章:

  • 网上做任务的网站有哪些网站建设互诺科技
  • 随州制作网站建材商城网站建设
  • 网站建设的方法有哪些内容与网站建设相关的论文题目
  • 梧州门户网站购买网站平台如何做分录
  • 网站程序制作软件做网站需要自己研发吗
  • 公交车网站怎么做留言板网站建设公司专业网站开发研发
  • 电脑网站建设策划书北大青鸟职业技术学院简介
  • 创新的邯郸网站建设给企业做网站怎么收钱
  • 做网站多少钱PageAdmin企业解决方案案例
  • 自建网站要多少钱程序员wordpress
  • 南昌企业网站制作室内设计平面图案例分析
  • 网站过期查询驻马店市建设工程网站
  • 西丽网站设计网站对联模板
  • 昆明网站建设哪家最好用户登录页面html代码
  • 简述网站开发的几个步骤郑州网站建设郑州
  • 佛山网站建设哪家好虚拟机做网站
  • 邢台网站建设03191688永平建设有限公司网站
  • 佛山企业网站制作今天军事新闻最新消息
  • php网站开发实例教程代码百度云摄影设计网站
  • 网站空间管理站中山好的网站建设公司
  • 商家版微信小程序怎么弄网站怎么做搜索引擎优化
  • 网站交互效果wordpress怎么关注站点
  • 上海市建设监理协会网站查询国内免费代理服务器
  • 网站备案是针对空间还是域名猎头公司的工作模式不包括
  • 郑州网站建设到诺然wordpress 树形页面
  • 网站建设原型图客户关系管理案例10个
  • 网站建设 怎么跑业务网站维护一般多久
  • 一起做网站注册地址网页设计指什么
  • 番禺南村网站建设绍兴市住房和城乡建设局官方网站
  • 女频做的最好的网站商河 网站建设