213. House Robber II

原创 2017年09月13日 20:24:15

Note: This is an extension of House Robber.

After robbing those houses on that street, the thief has found himself a new place for his thievery so that he will not get too much attention. This time, all houses at this place are arranged in a circle. That means the first house is the neighbor of the last one. Meanwhile, the security system for these houses remain the same as for those in the previous street.

Given a list of non-negative integers representing the amount of money of each house, determine the maximum amount of money you can rob tonight without alerting the police.

和之前的house robber差不多,只能隔着房间偷东西,要是两个连着的房间偷了就会触发警报,现在房间头尾连起来了。问如何解决问题。

解题点,头尾相连,

因为头尾相连所以头尾这两个房子只能偷一个,这样就形成了两种可能,

0到n-2之间的和1到n-1之间的,比较这两个大小,取大即可。

使用dp解决单个问题,第m个房子的最大值取决于第m-1房的最大值和m-2房最大值+m房的值。max(r(m-1), r(m-2)+m);这里仅使用了两个变量所以不需要使用数组去存储值。

class Solution {
public:
    int rob(vector<int>& nums) {
        int len = nums.size();
        if( len<2 ){
            return len?nums[0]:0;
        }
        
        return max(robber(nums,0,len-2), robber(nums,1,len-1));
    }
    int robber(vector<int>& nums, int l, int r){
        int pre = 0, cur = 0;
        for(int i=l; i<=r; i++){
            int tmp = max(pre+nums[i], cur);
            pre = cur;
            cur = tmp;
        }
        return cur;
    }
};



版权声明:本文为博主原创文章,转载请注明出处。 举报

相关文章推荐

<LeetCode OJ> (198 / 213) House Robber(I / II)

House Robber My Submissions Question Total Accepted: 45702 Total Submissions: 142460 Difficulty:...

[leetcode 213]House Robber II

Note: This is an extension of House Robber. After robbing those houses on that street, the thief ha...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

leetcode - 198,213. House Robber(II) & 91. Decode Ways

算法系列博客之Dynamic Programming 本篇博客将运用动态规划的思想来解决leetcode上198和213号问题 问题描述:198 House RobberYou are a pr...

leetcode 213. House Robber II

After robbing those houses on that street, the thief has found himself a new place for his thievery ...

LeetCode No.213 House Robber II

LeetCode No.213 House Robber II

LeetCode-213. House Robber II

Note: This is an extension of House Robber. After robbing those houses on that street, the thief ha...

LeetCode 213 House Robber II (dp 三种方法 推荐)

LeetCode 213 House Robber II (dp)

Leetcode 213 House Robber II 抢劫最大金额

HouseRobber扩展:抢劫完那条街道上的房子之后,这个贼有找到了实施自己盗窃行动的另一个地点,这样他才不会引来太多注意。这次,这里的搜有房子排成了一个圆圈,这意味着第一个房子和最后一个房子也是挨...

LeetCode#213. House Robber II

213. House Robber II Total Accepted: 23996 Total Submissions: 80010 Difficulty: Medium Note: This i...

LeetCode 213. House Robber II 注意考察环尾和环头交叉处

213. House Robber II After robbing those houses on that street, the thief has found himself a new ...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)