[LeetCode] HouseRobber

原创 2015年07月07日 11:29:03

You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, the only constraint stopping you from robbing each of them is that adjacent houses have security system connected and it will automatically contact the police if two adjacent houses were broken into on the same night.

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.

Credits:

Special thanks to @ifanchu for adding this problem and creating all test cases. Also thanks to @ts for adding additional test cases.

1. DP问题,在每个index i有两个选择:如果抢劫i,则最大收益为(不抢劫i-1)+val[i];如果不抢劫i,则最大收益为(抢劫i-1)

class Solution {
public:
    int rob(vector<int>& nums) {
        int rob_true=0;
        int rob_false=0;
        for(auto val: nums)
        {
            int tmp=rob_true;
            //if rob this house, definitely cannot rob the previous house
            rob_true = rob_false + val;
            //if not rob this house, either rob or skip the previous house
            rob_false = max(tmp,rob_false);
        }
        return max(rob_true, rob_false);
    }
};


2. 递归的思路,超时!!!!!

class Solution {
public:
    void helper(vector<int>& nums, int start, int end, int& maxval, int tmpsum)
    {
        if(start>end) return;
        if(start==end){
            tmpsum+=nums[start];
            if(maxval<tmpsum) maxval=tmpsum;
            return;
        }
        //recursively call helper for conditions: (1) if nums[start] is picked;
        //(2) nums[start] is not picked
        helper(nums,start+2,end,maxval,tmpsum+nums[start]);
        helper(nums,start+1,end,maxval,tmpsum); //nums[start] is not picked
    }
    int rob(vector<int>& nums) {
        int maxval=0, tmpsum=0;
        helper(nums,0,nums.size()-1,maxval, tmpsum);
        return maxval;
    }
};


版权声明:本文为博主原创文章,未经博主允许不得转载。

LeetCode | HouseRobber 算法题

题目: You are a professional robber planning to rob houses along a street. Each house has a certain a...

leetcode(198)(213) HouseRobber HouseRobber-II

原题链接: https://leetcode.com/problems/house-robber/ https://leetcode.com/problems/house-robber-ii/...

HouseRobber(即求一串数中不连续的数之和中最大的)

You are a professional robber planning to rob houses along a street. Each house has a certain amount...

Leetcode代码以及解答(2)

  • 2017年10月27日 12:08
  • 63KB
  • 下载

【LeetCode】3Sum 解题报告

这道题凭我现有知识实在解答不上来,只好网上搜索解法,才发现 K Sum 是一类问题,但是网上没有比较简洁的代码,我想对于初学者来说,可能还是想先看看这道题怎么解,然后才有兴趣去看其扩展吧。 【题目】 ...
  • ljiabin
  • ljiabin
  • 2014年10月30日 16:00
  • 27144

LeetCode Patching Array

  • 2016年04月17日 18:06
  • 452B
  • 下载

leetcode-tag-Stack

  • 2017年04月29日 23:05
  • 36KB
  • 下载

手把手教你<leetcode>中的回溯算法——多一点套路

博主在学习回溯算法到应用其完成算法题经历了很多的困惑,查看别人博客的时候基本都是解决某个特定问题,而不是注重方法,相信不少读者看完和我一样一脸懵逼。所以博主想要尝试下写下自己总结的方法。希望这篇博客能...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[LeetCode] HouseRobber
举报原因:
原因补充:

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