关关的刷题日记 69 – Leetcode 198 House Robber

关关的刷题日记69 – Leetcode 198 House Robber

题目

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.

题目的意思是小偷沿着一排街道抢劫房子,每个房子都有一定数额的钱,但是不可以抢相邻的房子,问可以抢到的最大的钱数。

思路

动态规划的题目:设re[i]是抢劫前i个房子获得的最大收益,那么可以分为第i个房子不被抢和第i个房子被抢两种情况:第i个房子不被抢,re[i]=re[i-1];第i个房子被抢,re[i]=re[i-2]+nums[i];状态转移方程re[i]=max(re[i-1], re[i-2]+nums[i])。


class Solution {
public:
    int rob(vector<int>& nums) {
        int n=nums.size();
        if(n==0)
            return 0;
        if(n==1)
            return nums[0];
        if(n==2)
            return max(nums[0], nums[1]);
        int temp1=nums[0], temp2=max(nums[0],nums[1]), re;
        for(int i=2; i<n; i++)
        {
            re=max(temp1+nums[i],temp2);
            temp1=temp2;
            temp2=re;
        }
        return re;
    }
};



照顾好自己的身体,控制好自己的情绪,加油!

以上就是关关关于这道题的总结经验,希望大家能够理解,有什么问题可以在我们的专知公众号平台上交流或者加我们的QQ专知-人工智能交流群 426491390,也可以加入专知——Leetcode刷题交流群(请先加微信小助手weixinhao: Rancho_Fang)。 同时请,关注我们的公众号,获取最新关于专知以及人工智能的资讯、技术、算法等内容。扫一扫下方关注我们的微信公众号。

图片

展开全文
相关主题
Top
微信扫码咨询专知VIP会员