[LeetCode .213] House Robber II

2023-11-05

声明:题目来自Leetcode

You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed. All houses at this place are arranged in a circle. That means the first house is the neighbor of the last one. Meanwhile, 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.

Example 1:

Input: [2,3,2]
Output: 3
Explanation: You cannot rob house 1 (money = 2) and then rob house 3 (money = 2),
             because they are adjacent houses.

Example 2:

Input: [1,2,3,1]
Output: 4
Explanation: Rob house 1 (money = 1) and then rob house 3 (money = 3).
             Total amount you can rob = 1 + 3 = 4.

 

Solution:

class Solution {  
public:  
    int rob(vector<int>& nums) {
        if(nums.size() == 0)
            return 0;  
        if(nums.size() == 1)  
            return nums[0];  
        if(nums.size() == 2)  
            return max(nums[0], nums[1]);  
        if(nums.size() == 3)  
            return max( max(nums[0], nums[1]), nums[2]); 
        
        vector<int> temp_1(nums.size() - 1);
        vector<int> temp_2(nums.size() - 1);
        temp_1.assign(nums.begin(), nums.end() - 1);
        temp_2.assign(nums.begin() + 1, nums.end());
        
        int result_1 = find_max_money(temp_1);
        int result_2 = find_max_money(temp_2);
        return max(result_1, result_2);
    }
    
private:
    int find_max_money(vector<int> &array)
    {
        vector<int> max_money(array.size());  
        max_money[0] = array[0];  
        max_money[1] = array[1];  
        max_money[2] = max(array[0] + array[2], array[1]);  
        int result = max( max(max_money[0], max_money[1]), max_money[2] );  
        for(int i = 3; i < array.size(); i ++)  
        {  
            max_money[i] = array[i] + max(max_money[i - 2], max_money[i - 3]);  
            result = max(result, max_money[i]);  
        }  
        return result; 
    }
};  

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[LeetCode .213] House Robber II 的相关文章

  • 使用docker搭建elk

    一 安装前须知 以下步骤在 VMware 中的 centos 7 中操作 ip 地址为 192 168 161 128 注意安装的时候最好统一版本 否则后面会出现许多问题 进官网搜索对应镜像 查看 Tags 标签下的版本 目前我这最新的 T
  • Transformer怎么入门?如何学习Transformer?

    Transformer比较好学 整个路线也非常简单 就三步 第一步 理论学习 理论学习部分首先要了解Attention机制 这里推荐李宏毅老师的机器学习 或者看他的PPT 讲的很清楚 国外的也有斯坦福的CS25 Transformers U

随机推荐

  • 校园资料分享平台的设计与开发、资料分享

    目录 1 使用框架和技术 2 功能展示与说明 3 系统展示 3 1 使用到技术 3 2 前台展示 3 3 后台界面 4 论文资料和程序 在教育领域 使用IT技术可以使任何人 任何地方和任意的时间 都可以获得需要的资料 但现在的校园大多是综合
  • [stable-diffusion-art] 指北-4 模型

    Beginner s guide to Stable Diffusion models and the ones you should know Stable Diffusion ArtHow to install use and merg
  • 史上最全的 Python 3 类型转换指南

    int 支持转换为 int 类型的 仅有 float str bytes 其他类型均不支持 float gt int 会去掉小数点及后面的数值 仅保留整数部分 int 12 94 12 str gt int 如果字符串中有数字 0 9 和正
  • Windows下误删文件解决办法

    推荐几款优秀的数据恢复软件 Disk Drill Disk Drill是一款免费软件 支持支Windows 与 Mac 使用它能我们找回磁盘 U盘 等各种储存装置的视频 照片 文章等各类文件 最早了解这款软件还是当初帮一个妹纸的电脑恢复照片
  • 中国电信定制的中兴 ZXV10 B760H 机顶盒root全程记录

    家里有台机顶盒 是中兴 ZXV10 B760H 它是智能机顶盒 在写这篇文章之前 我已經对它进行了破解 别看是 智能机顶盒 但实际上已經让中国电信阉割的差不多了 只能看IPTV 我这个破解可以让它安装第三方app 今天重点讲root 你需要
  • ————博客永久废止————转到http://1su.net/nsB

    由于CSDN博客太难以管理 博主转向Ghost Blog Node的博客引擎 该博客永久废止 新的博客地址为http 1su net nsB
  • FutureTask 源码 并发设计模式

    一 代码 https www jianshu com p 60f661d95d53 public static void main String args throws Exception Callable
  • spring应用上下文的理解

    spring应用上下文的理解 容器 什么叫容器呢 如果你想要一个手机 好这时候spring就给你一个手机 你想要使用的对象 spring就会给你 但是现在我们就会问那spring给的对象来自于哪里呢 spring要负责的工作很多 那么多对象
  • Matlab矩阵

    1 通用的特殊矩阵 zeros函数 产生全0矩阵 ones函数 产生全1矩阵 eye函数 产生对角线为1的矩阵 当矩阵是方阵时 得到一个单位矩阵 rand函数 产生 0 1 区间均匀分布的随机矩阵 randn函数 产生均值为0 方差为1的标
  • Bootstrap统计学方法简介以及中心极限定理

    一 概念 Bootstrap 一词出自英文习语 pull yourself up by your bootstraps 它的隐含意是 improve your situation by your own efforts 即 通过你自己的努力
  • 163免费企业邮箱申请后怎么登陆?

    163免费企业邮箱目前的用户已经很多了 而关于申请的流程却并不多 很多人想用却不知道怎么注册申请 申请后又不清楚怎么登陆 下面小编为您讲解163免费企业邮箱注册申请及登陆流程 163免费企业邮箱注册申请 搜索163免费企业邮箱 打开企业邮箱
  • Git---企业级开发模型

    文章目录 前言 拓展 一 系统开发环境 二 Git分支设计规范 master分支 release分支 develop分支 feature分支 hotfix分支 三 企业级项目管理实战 准备工作 创建项目 创建仓库 添加成员 1 添加企业成员
  • redis分页查询代码实现

    redis分页查询 简单明了代码实现 本文是个基于redis的分页查询实现 场景描述 Redis分页自定义包装类 收藏和取消收藏biz业务处理 查询收藏数 查询用户收藏状态 分页查询我的收藏 本文是个基于redis的分页查询实现 本人业务开
  • 【JavaScript】Math 对象常见方法详解

    文章目录 JavaScript Math 对象常见方法详解 Math常见的方法 1 Math random 2 Math round 3 Math ceil 4 Math floor 5 Math abs 6 Math min 7 Math
  • Promise,async,await 面试题

    目录 5 面试题 1 2 3 4 5 6 7 推荐先看Promise 相关知识点 5 面试题 1 结果 1 5 2 3 4 const promise new Promise resolve reject gt console log 1
  • 前端自测运行vue打包后的dist文件

    在Vue项目中 dist目录是代码打包之后生成的文件夹 其中包含了静态资源文件和打包后的JavaScript CSS等文件 如果要在本地运行打包后的项目文件 可以使用简单的静态服务器来启动 下面介绍一种使用Node js中的http ser
  • 基于STC15单片机-LM35-DS8B20温度测量-DS1302计时-proteus仿真-源程序

    一 系统方案 1 本设计采用STC15单片机作为主控器 2 DS18B20采集温度值送到液晶1602显示 3 DS1302计时 日期送到液晶1602显示 4 LM35采集另一路温度值送到数码管显示 二 硬件设计 原理图如下 三 单片机软件设
  • Ubuntu16.04下 用Caffe训练自己的网络和模型并测试

    1 准备图片 训练太久就不放那么多图片了 在caffe根目录下data中新建文件夹6class 意思是6类 在6class文件夹下新建两个文件夹train和val train用来存放训练的图片 在train文件夹下新建6个文件夹0 5 图片
  • Base64编码图片转换成图片文件通用转换器(Java)

    Base64编码图片转换成图片文件通用转换器 Java 在本文中 我们将介绍如何使用Java实现将Base64编码的图片转换为图片文件的通用转换器 我们以将Base64编码转换为PNG图像文件为例 但同样的方法适用于其他图片格式 Base6
  • [LeetCode .213] House Robber II

    声明 题目来自Leetcode You are a professional robber planning to rob houses along a street Each house has a certain amount of m