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

互联网站建设昆明学校网站建设

互联网站建设,昆明学校网站建设,WordPress注册界面文字,深圳福田区是富人区吗代码随想录算法训练营第四十八天| 198 打家劫舍 213 打家劫舍II 337 打家劫舍III LeetCode 198 打家劫舍 题目: 198.打家劫舍 动规五部曲#xff1a; 确定dp数组以及下标的含义 dp[i]#xff1a;考虑下标i#xff08;包括i#xff09;以内的房屋#xff0c;最多可以偷…代码随想录算法训练营第四十八天| 198 打家劫舍 213 打家劫舍II 337 打家劫舍III LeetCode 198 打家劫舍 题目: 198.打家劫舍 动规五部曲 确定dp数组以及下标的含义 dp[i]考虑下标i包括i以内的房屋最多可以偷窃的金额为dp[i]。 确定递推公式 决定dp[i]的因素就是第i房间偷还是不偷。 dp[i] max(dp[i - 2] nums[i], dp[i - 1]) dp数组如何初始化 dp[0] 是 nums[0]dp[1]是nums[0]和nums[1]的最大值 即dp[1] max(nums[0], nums[1]) vectorint dp(nums.size()); dp[0] nums[0]; dp[1] max(nums[0], nums[1]);确定遍历顺序 dp[i] 是根据dp[i - 2] 和 dp[i - 1] 推导出来的从前到后遍历 for (int i 2; i nums.size(); i) {dp[i] max(dp[i - 2] nums[i], dp[i - 1]); }举例来推导dp数组 整体代码 class Solution { public:int rob(vectorint nums) {if (nums.size() 0) return 0;if (nums.size() 1) return nums[0];vectorint 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 此题与上题区别是有成环的情况主要分为 情况一考虑不包含首尾元素情况二考虑包含首元素不包含尾元素情况三考虑包含尾元素不包含首元素 整体代码 class Solution { public:int rob(vectorint 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(vectorint nums, int start, int end) {if (end start) return nums[start];vectorint 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 本题换成了树首先想到遍历方式 本题一定要后序遍历需要通过递归函数的返回值来做下一步计算。 确定递归函数的参数和返回值 vectorint robTree(TreeNode* cur) 本题dp数组是一个长度为2的数组 确定终止条件 在遍历的过程中如果遇到空节点的话很明显无论偷还是不偷都是0返回 if (cur NULL) return vectorint{0, 0};确定遍历顺序 使用后序遍历。通过递归函数的返回值来做下一步计算。 通过递归左节点得到左节点偷与不偷的金钱。 通过递归右节点得到右节点偷与不偷的金钱。 // 下标0不偷下标1偷 vectorint left robTree(cur-left); // 左 vectorint right robTree(cur-right); // 右 // 中确定单层递归的逻辑 如果偷当前节点左右孩子不能偷val1 cur-val left[0] right[0]; 如果不偷当前节点左右孩子可以偷选一个最大的val2 max(left[0], left[1]) max(right[0], right[1]); 当前节点的状态就是{val2, val1}; 即{不偷当前节点得到的最大金钱偷当前节点得到的最大金钱} vectorint left robTree(cur-left); // 左 vectorint 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};举例推导dp数组 整体代码 class Solution { public:int rob(TreeNode* root) {vectorint result robTree(root);return max(result[0], result[1]);}// 长度为2的数组0不偷1偷vectorint robTree(TreeNode* cur) {if (cur NULL) return vectorint{0, 0};vectorint left robTree(cur-left);vectorint 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.hkea.cn/news/14572826/

相关文章:

  • 微信文章转网站wordpress怎么才能成功做网站
  • 济南网站建设的公司移动网站开发入门
  • 北京高端建设网站一件代发48个货源网站
  • 网站可以在手机上做吗机票网站开发知乎
  • 网页制作与网站设计论文台州公司做网站
  • vs2005做网站手机网站软件
  • 手机网站表单验证上海短视频推广公司
  • 做彩票网站被捉将受到什么惩罚哈尔滨网站制作策划
  • 科大讯飞哪些做教学资源的网站如何在yy做电影网站
  • 哪些行业没有做网站中国建筑网校
  • 企业网站建设综合实训心得体会想开一个做网站的公司
  • 做电子购物网站需要申请网站设计布局的重要性
  • 快速生成网站程序电子商务发展现状与趋势
  • 青岛做英文网站的公司招商网站大全
  • 百度网盟推广官网入口seo搜索引擎优化怎么优化
  • 个人网站备案要求ps切图做网站
  • 平面设计的网站有哪些成都网销网站
  • 保安做网站微视看视频领红包下载安装
  • 免费建站建设网站wordpress输入正确密码无法登陆
  • 如何制作一网站wordpress侧边栏折叠菜单
  • 系统网站建设wordpress 播放音频
  • 做一个个人网站的步骤网站建设兼职平台
  • 邹城网站网站建设口碑好的高密网站建设
  • 鹤壁高端网站建设如何做网站后台
  • 郑州哪里有做网站的网页设计板式网站
  • 网站年费网站建设要注意
  • 宜昌最权威网站建设公司网站建设服务费一年多少钱
  • 怎样申请免费网站空间深圳几个区
  • 阿里巴巴有几个网站是做外贸的网站优化 检测响应速度
  • 网站监测浏览器类型全国十大外贸平台