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

高端网站建设专业宁波seo如何做推广平台

高端网站建设专业,宁波seo如何做推广平台,南宁网络推广方案,博物馆网站建设依据198. 打家劫舍(题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台) 思路:dp题除背包外的另外一类题目,重点不在于看前面的情况,而在于考虑本节点的情况。一种情况&#xf…

198. 打家劫舍(题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台)

思路:dp题除背包外的另外一类题目,重点不在于看前面的情况,而在于考虑本节点的情况。一种情况,选择本节点;另一种情况,不选择本节点,看哪种情况下的值最大。初始化也有所不同,不是简单地dp[0]=0,dp[1]=1诸如此类,dp[1]要考虑dp[0]的大小才能决定。

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

213. 打家劫舍 II(题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台)

思路:环形数组,第一次见dp中这样的设置,其实很简单,总体上考虑两种情况:情况一:考虑除数组头外的其他所有元素;情况二:考虑除数组尾外的其他所有元素。最后取这两个里面的最大值就好。

int robRange(vector<int>& nums, int start, int end){if(end==start) return nums[end];vector<int> dp(nums.size(), 0);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];
}int rob(vector<int>& nums) {int size = nums.size();if(size==1) return nums[0];int result1 = robRange(nums, 0, size-2);int result2 = robRange(nums, 1, size-1);return max(result1, result2);
}

337. 打家劫舍 III(题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台)

思路:树形dp,dp的做法和二叉树的遍历的做法没有很大差异,或者说dp的做法就是基于二叉树的遍历做了一点点的改进,只是为了让它更像是动态规划。

递归遍历做法:

unordered_map<TreeNode*, int> umap;
int rob(TreeNode* root) {if(root == NULL) return 0;if(root->left==NULL && root->right==NULL) return root->val;if(umap[root]) return umap[root];int val1 = root->val;if(root->left) val1 += rob(root->left->left)+rob(root->left->right);if(root->right) val1 += rob(root->right->left)+rob(root->right->right);int val2=rob(root->left)+rob(root->right);umap[root] = max(val1, val2);return max(val1, val2);
}

其中用umap是为了让树中每个节点只遍历一遍,避免反复求值。

dp做法:

int rob(TreeNode* root) {vector<int> result = robTree(root);return max(result[0], result[1]);
}vector<int> robTree(TreeNode* cur){if(cur==NULL) return {0,0};vector<int> left = robTree(cur->left);vector<int> right = robTree(cur->right);int val1 = cur->val + left[1] + right[1];int val2 = max(left[0], left[1]) + max(right[0], right[1]);return {val1, val2};
}

http://www.khdw.cn/news/38830.html

相关文章:

  • 大连手机网站制作韩国vs加纳分析比分
  • 自己做网站的难度网站外贸推广
  • 网站关键词搜索网站建设是什么
  • 寻找石家庄网站建设丈哥seo博客工具
  • 网站建设的网络技术怎样优化网站排名靠前
  • 做网站和app哪个简单企业推广宣传方案
  • 网站开发论文近三年的参考文献宁德市医院
  • 重庆专业网站建设公司哪家好seo优化顾问服务
  • wordpress nav菏泽资深seo报价
  • 网站开发框架拓扑西安seo专员
  • 新手学做网站推荐软件网站收录教程
  • asp.net网站开发实例广告信息发布平台
  • 济阳做网站公司seo新站如何快速排名
  • 怎么做监控网站资源
  • 网站开发所遵循长沙搜索排名优化公司
  • 重庆本地建站百度app下载官方
  • 专业做网站的公司邢台专业做网站百度应用商店app
  • 临夏州建设网站电商运营推广的方式和渠道有哪些
  • 公司网站需求说明书怎样做企业推广
  • 怎么找网站做推广网站推广经验
  • 钓鱼网站怎么做自己个人怎样做电商
  • 情感导师在线咨询服务深圳搜狗seo
  • 毕业设计做网站怎样做特别一点百度搜索收录入口
  • 广州文化网站模板关键词优化推广公司哪家好
  • 网站建设的工作描述免费建站的网站
  • 企业手机网站源码制作公司网站的公司
  • 怎么用网站挂QQ百度在线下载
  • 北京网站建设最便宜的公司哪家好西安seo阳建
  • 什么网站做私人空间好网站收录查询工具
  • 济南10大互联网公司排名优化服务是什么意思