213. House Robber II
来源:互联网 发布:java病毒代码 编辑:程序博客网 时间:2024/06/05 11:51
Note: This is an extension of House Robber.
After robbing those houses on that street, the thief has found himself a new place for his thievery so that he will not get too much attention. This time, all houses at this place are arranged in a circle. That means the first house is the neighbor of the last one. Meanwhile, the security system for these houses remain the same as for those in the previous street.
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.
和之前的house robber差不多,只能隔着房间偷东西,要是两个连着的房间偷了就会触发警报,现在房间头尾连起来了。问如何解决问题。
解题点,头尾相连,
因为头尾相连所以头尾这两个房子只能偷一个,这样就形成了两种可能,
0到n-2之间的和1到n-1之间的,比较这两个大小,取大即可。
使用dp解决单个问题,第m个房子的最大值取决于第m-1房的最大值和m-2房最大值+m房的值。max(r(m-1), r(m-2)+m);这里仅使用了两个变量所以不需要使用数组去存储值。
class Solution {public: int rob(vector<int>& nums) { int len = nums.size(); if( len<2 ){ return len?nums[0]:0; } return max(robber(nums,0,len-2), robber(nums,1,len-1)); } int robber(vector<int>& nums, int l, int r){ int pre = 0, cur = 0; for(int i=l; i<=r; i++){ int tmp = max(pre+nums[i], cur); pre = cur; cur = tmp; } return cur; }};
- 213.House Robber II
- 213. House Robber II
- 213. House Robber II
- 213. House Robber II
- 213. House Robber II
- 213. House Robber II
- 213. House Robber II
- 213. House Robber II
- 213. House Robber II
- 213. House Robber II
- 213. House Robber II
- 213. House Robber II
- 213. House Robber II
- 213. House Robber II
- 213. House Robber II
- 213. House Robber II**
- 213. House Robber II
- 213. House Robber II
- Slam编程一 旋转向量、旋转矩阵,欧拉角、变换矩阵和四元数
- matlab中的uigetfile函数和setappdata函数
- L1,L2 正则化与过拟合问题
- Win10 配置Docker -- 运行MySQL实例篇
- Windows10上再安装个Linux系统
- 213. House Robber II
- Linux命令之head,tail
- UVA
- 算法设计课作业系列3——Different Ways to Add Parentheses
- 使用数组实现堆栈
- jdk java 多边形判断 工具类 工程
- 51Nod 1011 最大公约数GCD
- UVa-11400 Lighting System Design
- 欢迎使用CSDN-markdown编辑器