[leetcode] House Robber II
2015-05-23 18:40
351 查看
和I类似,II变成了环形,即首尾只能取一个。调用两次即可。代码如下:
int rob(vector<int>& nums) {
if(nums.empty())
return 0;
if(nums.size() == 1)
return nums[0];
int val = *prev(nums.end());
nums.pop_back();
int result = robLine(nums);
nums.erase(nums.begin());
nums.push_back(val);
return max(result, robLine(nums));
}
int robLine(vector<int> &num) {
if(num.empty())
return 0;
int pre = 0, cur = num[0];
int result = cur;
for(int i = 1; i < num.size(); ++i){
result = max(result, pre + num[i]);
pre = cur;
cur = result;
}
return result;
}
int rob(vector<int>& nums) {
if(nums.empty())
return 0;
if(nums.size() == 1)
return nums[0];
int val = *prev(nums.end());
nums.pop_back();
int result = robLine(nums);
nums.erase(nums.begin());
nums.push_back(val);
return max(result, robLine(nums));
}
int robLine(vector<int> &num) {
if(num.empty())
return 0;
int pre = 0, cur = num[0];
int result = cur;
for(int i = 1; i < num.size(); ++i){
result = max(result, pre + num[i]);
pre = cur;
cur = result;
}
return result;
}
相关文章推荐
- House Robber II (leetcode 213)
- leetcode——213——House Robber II
- [LeetCode] House Robber II
- Leetcode House Robber II
- LeetCode 213. House Robber II
- LeetCode House Robber II
- [LeetCode] House Robber II 求循环数组中元素两两不相邻的子序列最大和
- [LeetCode] House Robber II
- 【leetcode】House Robber I && II
- Leetcode 213. House Robber II
- [leetcode]213. House Robber II
- Leetcode 213. House Robber II
- LeetCode -- House Robber II
- [leetcode] House Robber II
- LeetCode -- House Robber II
- LeetCode - 213. House Robber II
- [LeetCode]House Robber II
- Leetcode House Robber II
- 【leetcode】House Robber II
- [LeetCode]House Robber II (二次dp)