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

东莞网站建设要注意什么武汉网站优化

东莞网站建设要注意什么,武汉网站优化,建筑用木模板的规格与价格,网站做众筹需哪些条件leetcode 198.打家劫舍 题目链接:198. 打家劫舍 - 力扣(LeetCode) 视频链接:动态规划,偷不偷这个房间呢?| LeetCode:198.打家劫舍_哔哩哔哩_bilibili 题目概述 你是一个专业的小偷,…

leetcode 198.打家劫舍

题目链接:198. 打家劫舍 - 力扣(LeetCode)

视频链接:动态规划,偷不偷这个房间呢?| LeetCode:198.打家劫舍_哔哩哔哩_bilibili

题目概述

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警

给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。

示例 1:

输入:[1,2,3,1]
输出:4
解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4 。

示例 2:

输入:[2,7,9,3,1]
输出:12
解释:偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。偷窃到的最高金额 = 2 + 9 + 1 = 12 。

思路

本题只说不能相邻两个房间偷,所以说只要不是相邻两个房间的话,不论你选择第几个房间都可以,只要偷的钱最多就好,没有太多限制因素。

依旧是动规五部曲

1.确定dp数组含义:

dp[i]:考虑下标i(包括i)之内的房屋,最多可以偷的金额是dp[i]。

2.确定递推公式:

偷i:dp[i]=nums[i]+dp[i-2]

不偷i:dp[i]=dp[i-1]

所以递推公式:dp[i]=max(nums[i]+dp[i-2],dp[i-1])。

3.数组初始化:

dp[0]=nums[0]

dp[1]=max(nums[0],nums[1])

4.确定遍历顺序:

从前向后

5.打印dp数组:

198.打家劫舍

 

代码实现 

lass Solution {
public:int rob(vector<int>& nums) {if(nums.size() == 0) return 0;if(nums.size() == 1) return nums[0];vector<int> dp(nums.size());dp[0] = nums[0];dp[1] = max(nums[0],nums[1]);for(int i = 2;i < nums.size();i++) {dp[i] = max(dp[i - 2] + nums[i],dp[i - 1]);}return dp[nums.size() - 1];}
};

leetcode 213.打家劫舍II

题目链接:213. 打家劫舍 II - 力扣(LeetCode)

视频链接:动态规划,房间连成环了那还偷不偷呢?| LeetCode:213.打家劫舍II_哔哩哔哩_bilibili

题目概述

你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。

给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,今晚能够偷窃到的最高金额。

示例 1:

输入:nums = [2,3,2]
输出:3
解释:你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相邻的。

示例 2:

输入:nums = [1,2,3,1]
输出:4
解释:你可以先偷窃 1 号房屋(金额 = 1),然后偷窃 3 号房屋(金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4 。

示例 3:

输入:nums = [1,2,3]
输出:3

思路

其实本题和上题差不多,就是本题变成了一个环,不利于思考。但是,我们可以把环拆成一个线性数组,那么就会有三种情况:(考虑只是考虑,并不一定会偷)

1.考虑不包含首尾元素,如图所示:

213.打家劫舍II

2.考虑包含首元素,如图所示:

213.打家劫舍II1

3.考虑包含尾元素,如图所示:

213.打家劫舍II2

 第二种和第三种情况把第一种情况包含了,所以本题只是把数组做了一个截取,传进主函数去取最大值而已。

代码实现 

class Solution {
public:int rob(vector<int>& nums) {if (nums.size() == 0) return 0;if (nums.size() == 1) return nums[0];int result1 = robRange(nums, 0, nums.size() - 2); // 情况二int result2 = robRange(nums, 1, nums.size() - 1); // 情况三return max(result1, result2);}// 198.打家劫舍的逻辑int robRange(vector<int>& nums, int start, int end) {if (end == start) return nums[start];vector<int> dp(nums.size());dp[start] = nums[start];dp[start + 1] = max(nums[start], nums[start + 1]);for (int i = start + 2; i <= end; i++) {dp[i] = max(dp[i - 2] + nums[i], dp[i - 1]);}return dp[end];}
};

leetcode 337.打家劫舍 III

题目链接:337. 打家劫舍 III - 力扣(LeetCode)

视频链接:动态规划,房间连成树了,偷不偷呢?| LeetCode:337.打家劫舍3_哔哩哔哩_bilibili

题目概述

小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为  root。

除了root 之外,每栋房子有且只有一个"父"房子与之相连。一番侦察之后,聪明的小偷意识到"这个地方的所有房屋的排列类似于一棵二叉树"。如果 两个直接相连的房子在同一天晚上被打劫 ,房屋将自动报警。

在不触动警报的情况下 ,小偷能够盗取的最高金额 。

 

示例 1:

输入: root = [3,2,3,null,3,null,1]
输出: 7 
解释: 小偷一晚能够盗取的最高金额 3 + 3 + 1 = 7

示例 2:

输入: root = [3,4,5,1,3,null,1]
输出: 9
解释: 小偷一晚能够盗取的最高金额 4 + 5 = 9

思路

这道题目算是树形dp的入门题目,以递归三部曲加动规五部曲来讲:

1.确定递归函数的参数和返回值

返回值:一个长度为2的数组。

确定dp数组含义:下标为0记录不偷该节点所得到的的最大金钱,下标为1记录偷该节点所得到的的最大金钱。

2.确定终止条件

遇空就返回。

3.确定遍历顺序

后序遍历

4.确定单层递归的逻辑

当前节点偷:val1 = cur->val + left[0] + right[0]

当前节点不偷:val2 = max(left[0], left[1]) + max(right[0], right[1])

5.举例推导dp数组

 

代码实现 

class Solution {
public:int rob(TreeNode* root) {vector<int> result = robTree(root);return max(result[0], result[1]);}// 长度为2的数组,0:不偷,1:偷vector<int> robTree(TreeNode* cur) {if (cur == NULL) return vector<int>{0, 0};vector<int> left = robTree(cur->left);vector<int> right = robTree(cur->right);// 偷cur,那么就不能偷左右节点。int val1 = cur->val + left[0] + right[0];// 不偷cur,那么可以偷也可以不偷左右节点,则取较大的情况int val2 = max(left[0], left[1]) + max(right[0], right[1]);return {val2, val1};}
};

http://www.tj-hxxt.cn/news/99641.html

相关文章:

  • 网页布局照着别的网站做会侵权吗安卓aso优化排名
  • 泉州大型网站建设权重查询
  • net网站建设入门教程哈尔滨最新消息
  • behance是什么网站如何用html制作网页
  • 做门户网站用什么服务器查询网站备案信息
  • wordpress 自建模版沧浪seo网站优化软件
  • 涿州做网站公司杭州网站优化服务
  • 公司网站空间域名建设中国第三波疫情将在9月份
  • 淘宝网页版电脑版登录杭州网站seo公司
  • 网站添加ico图标广告联盟论坛
  • 教师做班级网站磁力
  • 网站建设需求文案合肥网络推广营销
  • 青岛建设集团招工信息网站网站注册域名
  • 小红书推广怎么做南京百度seo排名优化
  • 如何免费网站建设友情网
  • 最权威的做网站设计公司价格广州网站seo地址
  • 浙江网站建设推广快优吧seo优化
  • 专业网站设计公司地址网络营销包括哪些
  • 未来商城网站建设软件开发培训中心
  • gta5网站正在建设中搜索引擎推广试题
  • 做网站的属于什么专业?seo黑帽技术
  • 做网站什么意思注册公司
  • 兰州发布紧急通知宁波seo整站优化
  • 做室内效果图的网站如何在百度上投放广告
  • 许昌市住房和城乡建设部网站百度下载2022新版安装
  • 搭建网站源码系统优化软件排行榜
  • java做博客网站有哪些网络营销策划方案格式
  • 网站备案帐号网络推广招聘
  • 互联网企业网站广告网
  • 沟通交流类网站有哪些成都关键词seo推广平台