首页 > 其他分享 >213. 打家劫舍 II

213. 打家劫舍 II

时间:2023-05-31 16:33:40浏览次数:47  
标签:偷窃 213 nums int len II 房屋 打家劫舍 dp

你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。

给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,今晚能够偷窃到的最高金额。


输入:nums = [2,3,2]
输出:3
解释:你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相邻的。

> 我的解法


class Solution {
public:
    int rob(vector<int>& nums) {
        int len = nums.size();
        if(len == 1) return nums[0];
        vector<int> dp(len,0);
        dp[0] = nums[0];
        //第一种情况 第一家一定被偷
        dp[1] = dp[0];
        for(int i = 2;i < len;i++){
            dp[i] = max(dp[i-2] +nums[i],dp[i-1]);
            //最后一家一定不能被偷
            if(i == len - 1){
                dp[i] = dp[i-1];
            }
        }
        int sum = dp[len-1];
        //第二种情况 第一家不被偷
        dp[0] = 0;
        dp[1] = nums[1];
        for(int i = 2;i < len;i++){
            dp[i] = max(dp[i-2] +nums[i],dp[i-1]);
            //最后一家可以被偷 也可以不被偷
        }
        return max(dp[len-1],sum);
    }
};

标签:偷窃,213,nums,int,len,II,房屋,打家劫舍,dp
From: https://www.cnblogs.com/lihaoxiang/p/17446552.html

相关文章

  • 代码随想录算法训练营第七天|454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之
    第454题.四数相加II力扣题目链接(opensnewwindow)给定四个包含整数的数组列表 A,B,C,D,计算有多少个元组(i,j,k,l) ,使得 A[i]+B[j]+C[k]+D[l]=0。为了使问题简单化,所有的A,B,C,D具有相同的长度 N,且0≤N≤500。所有整数的范围在-2^28到2^28......
  • leetcode 557. Reverse Words in a String III
    Givenastring,youneedtoreversetheorderofcharactersineachwordwithinasentencewhilestillpreservingwhitespaceandinitialwordorder.Example1:Input:"Let'stakeLeetCodecontest"Output:"s'teLekatedoCteeLtsetno......
  • leetcode 107. Binary Tree Level Order Traversal II
    Givenabinarytree,returnthebottom-uplevelordertraversalofitsnodes'values.(ie,fromlefttoright,levelbylevelfromleaftoroot).Forexample:Givenbinarytree[3,9,20,null,null,15,7],3/\920/\157returnits......
  • leetcode 541. Reverse String II
    Givenastringandanintegerk,youneedtoreversethefirstkcharactersforevery2kcharacterscountingfromthestartofthestring.Iftherearelessthankcharactersleft,reverseallofthem.Iftherearelessthan2kbutgreaterthanorequalt......
  • leetcode 350. Intersection of Two Arrays II
    Giventwoarrays,writeafunctiontocomputetheirintersection.Example:Givennums1=[1,2,2,1],nums2=[2,2],return[2,2].Note:Eachelementintheresultshouldappearasmanytimesasitshowsinbotharrays.Theresultcanbeinanyorder.Foll......
  • #yyds干货盘点# LeetCode程序员面试金典:填充每个节点的下一个右侧节点指针 II
    题目:给定一个二叉树:structNode{ intval; Node*left; Node*right; Node*next;}填充它的每个next指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将next指针设置为NULL。初始状态下,所有 next指针都被设置为NULL。 示例1:输入:root=[1,2,3......
  • 518.零钱兑换II
    给你一个整数数组coins表示不同面额的硬币,另给一个整数amount表示总金额。请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回0。假设每一种面额的硬币有无限个。题目数据保证结果符合32位带符号整数。输入:amount=5,coins=[1,2,......
  • 剑指 Offer II 039. 直方图最大矩形面积
    题目链接:剑指OfferII039.直方图最大矩形面积方法:单调栈解题思路以直方图中的某一条为高的最大(面积)矩形的宽度为\(r-l+1\),其中\(r\)表示在其右边第一个小于(或等于)当前高度的下标,\(l\)表示在其左边第一个小于当前高度下标。\(l\),\(r\)可以利用单调栈在\(O(1)......
  • Problem B: 类的初体验(II)
    HomeWebBoardProblemSetStandingStatusStatisticsProblemB:类的初体验(II)TimeLimit:1Sec  MemoryLimit:128MBSubmit:715  Solved:653[Submit][Status][WebBoard]Description定义一个类Data,只有一个double类型的属性和如下3个方法:1. 带1......
  • 剑指 Offer 57 - II. 和为s的连续正数序列
    题目描述:输入一个正整数target,输出所有和为target的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。 方法:滑动窗口(双指针) classSolution{publicint[][]findContinuousSequence(inttarget){inti=1,j......