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;
    }
};



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

相关文章推荐

95. Unique Binary Search Trees II

Given an integer n, generate all structurally unique BST's (binary search trees) that store values 1...

UNIX编程初遇问题ourhdr.h文件

将如下代码保存到ourhdr.h中,放在工作文件夹下或/usr/include下,但我这里放在/usr/include下后出现一些问题,放在工作文件夹下则可以正常编译。 /*Our own he...

<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...

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

算法系列博客之Dynamic Programming 本篇博客将运用动态规划的思想来解决leetcode上198和213号问题 问题描述:198 House RobberYou are a pr...
  • Quiteen
  • Quiteen
  • 2017年06月11日 15:09
  • 90

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

213. House Robber II After robbing those houses on that street, the thief has found himself a new ...

Leetcode 213 House Robber II 抢劫最大金额

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

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...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:213. House Robber II
举报原因:
原因补充:

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