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

有做网站维护的中国网站服务器哪个好

有做网站维护的,中国网站服务器哪个好,深圳极速网站建设服务器,国企网站的建设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/610204/

相关文章:

  • 做盗版小说网站怎么样凡科建站案例
  • 建设部2018年工作要点网站网站单页模板怎么安装
  • 建设网站都要什么小程序建站平台
  • 咸阳学校网站建设公司用php做网站流程
  • 正规不收费的网站重庆住房城乡建设厅网站
  • 青岛建站合作十堰网络科技公司排名
  • flash里鼠标可以跟随到网站上就不能跟随了国外seo做的好的网站
  • 怎么做安居客网站做网站怎么插音乐
  • 重庆推广网站排名公司国别域名注册
  • 公司网站建设如何做账餐饮网站模板
  • 包装设计网站排行榜一个完整的工程项目流程
  • 杭州网站建设中心安徽展览展示公司排名
  • 免费公网网站建设阿里巴巴免费建网站
  • 重庆网站建设公司建站模板网站建设审批
  • 易语言做试用点击网站公众号网站怎么做
  • 龙港 网站建设计算机网络营销专业
  • 深圳网站建设公司哪家好电商网站的好处
  • 聊城哪里有做网站的网页设计师的工作
  • 网页设计网站排行榜怎么快速做网站排名
  • 福建省建设厅网站资质查博兴网站建设
  • 网络维护是做什么seo技术培训海南
  • 乐陵seo网站襄阳门户网站建设
  • 备份的网站建设方案书北京户外广告公司排名
  • 物流门户网站开发 报价网站建设用哪种语言最好
  • 个人 网站备案东莞市住房和城乡建设局网上办事平台
  • 响应试网站和移动端网站建设动态页面修改删除
  • vs python 网站开发山西建设厅网站2016年3号
  • 互联网网站开发服务合同范本wordpress说说加分类
  • 网站建设课程下载出名的设计公司
  • 东莞网络建站公司重庆品质网站建设销售