House Robber I & II | LeetCode
来源:互联网 发布:网络流行欧美歌曲 编辑:程序博客网 时间:2024/06/08 11:26
House Robber I
这是一道比较典型的DP的题目,由于相邻的两家不能同时被偷,所以每次选择的时候都需要进行取舍。选取了两个偶数位的值不一定会比加在中间这个奇数位的值大,所以就需要比较,每次选取最大的。代码如下:
int rob(vector<int>& nums) { int size = nums.size(); int even=0,ad=0; for(int i=0;i<size;++i){ if(i%2==0) even = max(ad,even+nums[i]); else ad = max(even,ad+nums[i]); } return max(even,ad); }
代码中 ad = max(even,ad+nums[i]),就是比较中间的偶数如果被robber的值和robber两边奇数相加的和取最大。下面我们继续看House Robber II.
House Robber II
因为所有的房子都连接成环,我这里想到的方法就是转换为第一种方式来,假设选了第一家,或者选了最后一家,然后取最大,代码如下:
int rob(vector<int>& nums) { int size = nums.size(); if(size==1) return nums[0]; int a=0,b=0; for(int i=0;i<size-1;++i){ if(i%2==0) a = max(b,a+nums[i]); else b = max(a,b+nums[i]); } int zero = max(a,b); a=b=0; for(int i=1;i<size;++i){ if(i%2==0) a = max(b,a+nums[i]); else b = max(a,b+nums[i]); } int n=max(a,b); return max(zero,n); }
0 0
- 【leetcode】House Robber I && II
- House Robber I & II | LeetCode
- leetcode House Robber I II
- 【LeetCode】House Robber I & II 解题报告
- LeetCode House Robber I and II
- LeetCode House Robber I II III
- leetcode(198,213)House Robber(I,II)
- 【LeetCode】House Robber I,II,III解析
- [LeetCode]198. House Robber I&II
- [leetcode] House Robber [i ii iii]
- LeetCode House Robber II
- [LeetCode] House Robber II
- [leetcode] House Robber II
- 【leetcode】House Robber II
- Leetcode: House Robber II
- leetcode House Robber II
- [leetcode] House Robber II
- [LeetCode]House Robber II
- uLua中遇到的问题
- ubuntu中wine的安装位置
- Windows程序设计--设置滚动条详解二
- ucenter单点登录
- Mysql5.7在linux上安装步骤
- House Robber I & II | LeetCode
- zzulioj 1827: 石锅全拌 (线段树求区间和)
- Objective-C语言——实例方法与类方法之间互相调用
- jqurey.fullpage.js解读
- linux 下svn安装配置
- Python模块学习系列(4)----matplotlib
- RabbitMQ学习入门笔记
- pdf2html 手动编译,解决segmentation fault错误
- hdoj--5563--Clarke and five-pointed star(简单几何)