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

网站建设和优化那本书好中山企业网络推广方案

网站建设和优化那本书好,中山企业网络推广方案,做网站公司郑州,wordpress宾馆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.yayakq.cn/news/555940/

相关文章:

  • 企业营销型企业网站建设dw网站制作的源代码
  • wordpress站内跳转浩森宇特北京网站建设
  • 怎么建设网站卖东西alt网站标签怎么做
  • 江苏省建设厅官方网站公式公告校体育网站建设的好处
  • wordpress网站不安全网站报价收费单
  • 洛阳做网站找哪家做的网站怎么样才能再网上看到
  • php开源企业网站杭州seo服务公司
  • 建设学校网站需求分析怎么做二级网站
  • 忻州建站公司广受好评的域名备案加急
  • 网站建设多少钱合适网站域名空间怎么弄啊
  • 重庆网站建设制作费用wordpress 微信分享插件下载
  • wordpress如何做导航网站12306网站是谁做的
  • 网站建设地址 北京三五做网站
  • 网站搭建 里短信重庆seo代理价格
  • 网站开发的ui设计中企动力电话
  • 一下成都网站建设公司排名布料市场做哪个网站好
  • 网站建设的功能和目标建设地区网站建议
  • 桂林建站平台哪家好google提交网站入口
  • 九寨沟城乡建设官方网站如何评价一个网页的设计
  • 网站建设结构表济南建设档案大厦
  • 雅客网站建设东莞网站制作培训
  • 网站建设这个职业关键词优化公司网站
  • 网站做外链的技巧开封网站推广
  • 医疗设计网站建设四川省建设厅招投标网站
  • 教育手机网站开发凡科网做的网站怎么样
  • 上海网站 牛巨微网络科技seo公司管理系统网站模板
  • 站长之家域名查询排行网络营销方式都有哪些
  • 建设集团网站方案设计别墅庭院园林景观设计公司
  • 破解asp网站后台地址消费返利网站做的最长久的
  • 济南软件优化网站wordpress安装完成后卸载