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

百色做网站软件园

百色做网站,软件园,用网站源码做网站,如何介绍网站模板力扣爆刷第77天–动态规划一网打尽打家劫舍问题 文章目录 力扣爆刷第77天--动态规划一网打尽打家劫舍问题一、198.打家劫舍二、213.打家劫舍II三、337.打家劫舍 III 一、198.打家劫舍 题目链接:https://leetcode.cn/problems/house-robber/ 思路:小偷不…

力扣爆刷第77天–动态规划一网打尽打家劫舍问题

文章目录

      • 力扣爆刷第77天--动态规划一网打尽打家劫舍问题
      • 一、198.打家劫舍
      • 二、213.打家劫舍II
      • 三、337.打家劫舍 III

一、198.打家劫舍

题目链接:https://leetcode.cn/problems/house-robber/
思路:小偷不能连续两家偷,由此可以定义dp[i]表示,小偷经过[0,i]所能获取到的最大金额,那么我们可以得到递推公式:
dp[i] = Math.max(dp[i-1], dp[i-2]+nums[i]);
即如果偷nums[i]家就不能偷前一家,为dp[i-2]+nums[i],如果不偷当前这家,那金额就要维持为经过前一家时的结果。
很简单的题目,标准的动态规划,进行状态选择。
标准写法

class Solution {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-1], dp[i-2]+nums[i]);}return dp[nums.length-1];}
}

优化写法

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

二、213.打家劫舍II

题目链接:https://leetcode.cn/problems/house-robber-ii/
思路:本题和上一题不同之处是房间首尾相连,那么也很简单,直接从两个范围求,第一个范围[0, len-1], 第二个范围[1, len],分别从这两个范围,一个只含头,一个只含尾,其他的和上一题一样。

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]);return Math.max(getMax(nums, 0, nums.length-1), getMax(nums, 1, nums.length));}int getMax(int[] nums, int s, int e) {int[] dp = new int[nums.length];dp[s] = nums[s];dp[s+1] = Math.max(nums[s], nums[s+1]);for(int i = s+2; i < e; i++) {dp[i] = Math.max(dp[i-1], dp[i-2]+nums[i]);}return dp[e-1];}
}

三、337.打家劫舍 III

题目链接:https://leetcode.cn/problems/house-robber-iii/description/
思路:二叉树形态的打家劫舍,其实也很简单,每个节点有两种状态分别是抢不与抢,后序遍历返回dp数组,有了左右子树的dp数组即可计算当前节点的dp数组,计算后返回,以此递归即可解题。

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public int rob(TreeNode root) {int[] dp = traverse(root);return Math.max(dp[0], dp[1]);}// 0 偷 1 不偷int[] traverse(TreeNode root) {if(root == null) return new int[2];int[] left = traverse(root.left);int[] right = traverse(root.right);int[] dp = new int[2];dp[0] = root.val + left[1] + right[1];dp[1] = Math.max(left[0], left[1]) + Math.max(right[0], right[1]);return dp;      }}
http://www.yayakq.cn/news/210215/

相关文章:

  • 网站无法排版河北住房和城乡建设局网站
  • 网站被降权会发生什么影响苏州建筑设计公司排名
  • 如何购买建设网站系统沧州市
  • 中国建设银行官网站周波乐平网站
  • 地方生活门户网站建设方案wordpress 缓存 收录
  • 网站代理浏览器0太原网站制作多少钱
  • 哪个网站做海南二手房公司网站seo外包
  • 樟木头镇仿做网站山东兴华建设集团有限公司网站
  • 北京网站建设公司完美湖南岚鸿首 选网站开发赚钱么
  • html网站的设计哪些网站是用twcms做的
  • 哪个网站建站好wordpress用户注册文件
  • 企业网站栏目规划的重要性南宁响应式网站制作
  • 建设银行 网站用户拼多多网络营销模式
  • 杭州网站网站建设需要汇报哪些内容
  • 高端网站开发的公司深圳百度快速排名提升
  • 开平网站设计百度趋势搜索大数据
  • 烟台公司网站建设网站商城运营模式
  • 许昌市网站开发网站开发需要申请专利吗
  • 一对一直播网站开发厦门软件园网站开发
  • 长春火车站停车场24小时收费标准施工企业突发环境事件应急预案
  • 做网站图片显示不来企业网站主页模版
  • 网站的数据备份和恢复app推广营销公司
  • 网站制作 信科网络宿州做网站公司
  • 东莞网站建设品牌公司网站重新解析
  • 韩版做哪个网站好医疗网站的建设主要竞争对手
  • 网站开发项目项目运营网站带薪歌手都要怎样做呀
  • 丰都网站建设公司毕设 网站开发的必要性
  • 郑州做网站七彩科技邯郸做网站哪家好
  • 免费ps软件网站国内十大4a广告公司
  • 网站建设属于行政那个模块全球咨询公司最新排名