博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode 213. 打家劫舍 II(House Robber II)
阅读量:5230 次
发布时间:2019-06-14

本文共 1179 字,大约阅读时间需要 3 分钟。

目录

题目描述:

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

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

示例 1:

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

示例 2:

输入: [1,2,3,1]输出: 4解释: 你可以先偷窃 1 号房屋(金额 = 1),然后偷窃 3 号房屋(金额 = 3)。     偷窃到的最高金额 = 1 + 3 = 4 。

解法:

class Solution {public:    // the houses form a cycle, thus, the best answer either rob the first house, or rob the last house, or neither    int rob(vector
& nums) { int n = nums.size(); if(n == 0){ return 0; }else if(n == 1){ return nums[0]; } int pre = 0, cur = 0; int tmp = 0; for(int i = 0; i < n-1; i++){ tmp = nums[i] + pre; // rob i-th room pre = cur; cur = max(cur, tmp); } int res = cur; int pst = 0; cur = 0; for(int i = n-1; i > 0; i--){ tmp = nums[i] + pst; // rob i-th room pst = cur; cur = max(cur, tmp); } res = max(res, cur); return res; }};

转载于:https://www.cnblogs.com/zhanzq/p/10842833.html

你可能感兴趣的文章
TensorFlow MNIST CNN 代码
查看>>
javascript之Style物
查看>>
兼容所有浏览器的实时监听输入的解决方案(转)
查看>>
JSON跨域解决方案收集
查看>>
【转】linux dumpe2fs命令
查看>>
SSH框架整合总结
查看>>
图的深度优先遍历
查看>>
C# 之 提高WebService性能大数据量网络传输处理
查看>>
Python面向对象之:三大特性:继承,封装,多态以及类的约束
查看>>
微信小程序实现类似JQuery siblings()的方法
查看>>
md5sum命令详解
查看>>
[bzoj1004] [HNOI2008] Cards
查看>>
使用 Swoole 来加速你的 Laravel 应用
查看>>
TextWatcher原因activity内存泄漏问题
查看>>
Merge into的使用具体解释-你Merge了没有
查看>>
Linux安装程序Anaconda分析
查看>>
如何在chrome上打开SSL3.0
查看>>
应该是实例化对象的没有对属性赋值时,自动赋值为null,但不是空指针对象引用...
查看>>
从网易与淘宝的font-size思考前端设计稿与工作流
查看>>
原生HttpClient详细使用示例
查看>>