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

杨浦网站建设公司什么是互联网销售

杨浦网站建设公司,什么是互联网销售,彩票网站开发周期,怎么做点击图片进入网站打家劫舍 题目:198.打家劫舍 213.打家劫舍II 337.打家劫舍III 需要重做:全部 198.打家劫舍 思路:第i个房子偷与不偷,取决于第i-2个房子和第i-1个房子 注意:注意下标的一致性。现在的下标含义是房子的下标&#x…

打家劫舍

题目:198.打家劫舍  213.打家劫舍II   337.打家劫舍III

需要重做:全部

198.打家劫舍

思路:第i个房子偷与不偷,取决于第i-2个房子和第i-1个房子

注意:注意下标的一致性。现在的下标含义是房子的下标,而不是第几个房子。(也可以更改)

五部:

1.dp[i]:在第i个房子时,最多的钱

2.dp[i]=max(dp[i-2]+nums[i],dp[i-1]);

3.由递推式,知道要初始化dp0和dp1

4.从前到后遍历。

代码:

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

213.打家劫舍II

思路:在上题基础上,增加了环形。所以分成三种情况:

1.不含首尾元素;

2.可能包含首元素不含尾元素

3.可能包含尾元素不含首元素

利用198的函数即可

注意:其中,情况2 和情况3 都包含了情况1,所以情况1在计算中可以忽略

代码:

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

337.打家劫舍III    --树形dp

思路:就是从树根节点出发,决定每个节点是偷还是不偷。结合了树的遍历和动规。因为需要左右 的值来决定中间的值,所以选择后序遍历。

注意:

树的分析:

1.参数,返回值:应该return一个两个元素的数组,分别代表偷当前节点和不偷当前节点的值。参数为树节点

2.终止条件:遇到空节点return(0,0),遇到叶子返回(叶子val,0)

3.遍历顺序:后序遍历,因为需要左右的值。且需要记录左右的值

vector<int>left=rob(root->left) 

4.单层逻辑:val1=cur->val+left(1)+right(1):偷该节点

val2=max(left[0],left[1])+max(right[0].right[1]);不偷该节点(可以选择左右孩子偷还是不偷,选最大 的)

最后return(val1,val2)

代码:

class Solution {
public:int rob(TreeNode* root) {vector<int>res=robTree(root);return max(res[0],res[1]);}vector<int>robTree(TreeNode*cur){if(cur==nullptr)return {0,0};//(偷该节点,不偷该节点)if(cur->left==nullptr&&cur->right==nullptr)return{cur->val,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/12105/

相关文章:

  • 图片设计 五星级酒店网站镇江个人网站建设
  • 好建网站佛山网站建设4-win方维
  • 企业网站模板下载价格多少网站引导页动画
  • 擦边球网站做国内还是国外好如何制作线上投票
  • 现在那个网站做推广效果会好点南宁网站建设哪家
  • 什么网站可以自己做配图seo合作
  • 云南网站建设百度北京市建筑网站
  • 苏州网站外包wordpress justmedia
  • 网站建设前的功能表单布局漂亮html模板
  • 晋江+网站建设+推广网站开发要多少钱
  • 企业网站手机端万户网络是干什么的
  • 网站开发所需要注意的问题静态网页制作代码html
  • 免费域名注册服务网站自己怎么创建网站
  • 网站系统功能流程图杭州精高端网站建设
  • 做网站策划容易遇到哪些问题一般网站隐蔽点么么进
  • 城市建设网站调查问卷浦项建设内部网站
  • wordpress 交互插件徐州百度关键词优化
  • 手机网站产品展示模板咸阳今天的新消息
  • 松原网站建设公司网络营销推广方法是对什么和什么的合理利用
  • 网站数据采集 源码wordpress提速插件
  • wow做宏的网站免费网站访客qq统计系统
  • 滨江道做网站公司广州建设银行分行招聘网站
  • 四川网站开发哪家好做网站费用怎么付
  • wordpress4.9 多站点常熟市住房和城乡建设局网站
  • 中国造价工程建设监理协会网站深圳生产型企业网站建设专业
  • 宜兴埠网站建设wordpress 插件 破解
  • 新蒲建设集团网站wordpress 文章推荐一篇文章
  • 公司支付网站服务费怎么做分录wordpress自动添加html后缀
  • 网站优化与SEO区别商品列表页面html模板
  • 重庆住建网官网做站群网站好优化吗