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-面试算法经典-Java实现】【198-House Robber(抢劫犯)】

【189-House Robber(抢劫犯)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】代码下载【https://github.com/Wang-Jun-Chao】原题  Y...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月25日 06:41
  • 3577

LeetCode—House Robber 寻找数组不相邻组合最大值DP

https://leetcode.com/problems/house-robber/ 题目设计了一个抢劫犯的情景,其实就是求数组中不相邻数据进行组合得到的最大值 举一个例子 假设数据: 8 3...
  • xietingcandice
  • xietingcandice
  • 2015年04月12日 22:49
  • 1043

电子音乐及HOUSE的分类知识

电子音乐及HOUSE的分类知识 http://www.ca001.com/thread-241215-1-1.html
  • u011208377
  • u011208377
  • 2014年12月29日 23:25
  • 2120

LeetCode - 213. House Robber II

这道题目是House Robber的升级版,在这一题中,房子首尾相连,所以头部的房子和尾部的房子不能同时抢劫,这道题目只是比上道House Robber题目多了这一个限制条件,在上道题目中,第一个房子...
  • shenzhu0127
  • shenzhu0127
  • 2016年07月10日 09:22
  • 152

LeetCode-213. House Robber II (JAVA)(有环)

LeetCode-213. House Robber II (JAVA)(有环)
  • mine_song
  • mine_song
  • 2017年04月16日 17:16
  • 268

Leetcode213-House Robber II

After robbing those houses on that street, the thief has found himself a new place for his thievery ...
  • coderhuhy
  • coderhuhy
  • 2015年05月22日 11:16
  • 287

LeetCode 213. House Robber II

213. House Robber IIDescription After robbing those houses on that street, the thief has found hims...
  • Krista_Pan
  • Krista_Pan
  • 2017年05月01日 02:36
  • 139

[LeedCode OJ]#213 House Robber II

【 声明:版权所有,转载请标明出处,请勿用于商业用途。  联系信箱:libin493073668@sina.com】 题目链接:https://leetcode.com/prob...
  • libin1105
  • libin1105
  • 2015年08月24日 15:14
  • 678

LeetCode 213:House Robber II

class Solution { public: int rob(vector& nums) { int length = nums.size(); //cout
  • vvickey11
  • vvickey11
  • 2017年04月27日 22:54
  • 84

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

213. House Robber II After robbing those houses on that street, the thief has found himself a new ...
  • wys2011101169
  • wys2011101169
  • 2017年06月20日 21:38
  • 117
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:213. House Robber II
举报原因:
原因补充:

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