LeetCode (20) house robber (数组不相邻元素最大值)
来源:互联网 发布:淘宝联盟数据采集 编辑:程序博客网 时间:2024/05/16 01:34
题目描述
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.
这道题目的要求可以归纳为数组不相邻元素的最大和。这道题目可以根据动态规划的思想去解答。
对数组num从1…n的最大和f(n)可能有以下两种情况(注意这里为了说明方便,假设数组的起始元素为1):
- f(n) = f(n-2) + num[n];
- f(n) = f(n-1);
f(n)取以上两个值的最大值。当然本题可以使用递归的思路去处理,但是这样会进行多次重复的运算(本题其实类似于斐波那契数列),因此,从前向后的处理更有效率,这里只需要保存f(n-1)和f(n-2)的值即可。
代码如下:
class Solution {public: int rob(vector<int> &num) { int size = num.size(); if(size == 0) return 0; if(size == 1) return num[0]; if(size == 2) return max(num[0], num[1]); int n1 = num[0]; int n2 = num[0] > num[1] ? num[0] : num[1]; for(int i = 2; i != num.size(); ++i) { int n = n1 + num[i]; int n3 = n > n2 ? n : n2; n1 = n2; n2 = n3; } int r = max(n1, n2); return r; }};
- LeetCode (20) house robber (数组不相邻元素最大值)
- LeetCode—House Robber 寻找数组不相邻组合最大值DP
- LeetCode-198. House Robber (JAVA)寻找数组不相邻组合最大值DP
- House Robber:在不取相邻元素的情况下对数组求和
- [LeetCode] House Robber 求数组中元素两两不相邻的子序列最大和
- [LeetCode] House Robber II 求循环数组中元素两两不相邻的子序列最大和
- House Robber I - 由数组中不相邻元素组成的子数组,使其和最大
- 198.House Robber (求非相邻正整数的和最大值)
- LeetCode 198. House Robber【DP+滚动数组】
- LeetCode 198 House Robber(强盗盗窃最大值)(动态规划)(*)
- House Robber II:打家劫舍 取非相邻元素求和最大,且认为第一个元素与最后一个元素相邻
- LeetCode 198. House Robber(必须不连续数组的最大和)
- House Robber III:打家劫舍 在二叉树结构中取非相邻元素求和取最大
- 【dp】Leetcode House Robber&& House Robber II
- 【leetcode】House Robber && House Robber II
- LeetCode --- House Robber & House Robber II
- leetcode之旅-easy(House Robber)
- LeetCode OJ 之 House Robber(抢劫犯)
- IOS实现自动循环滚动广告--ScrollView的优化和封装
- gpu gem, nvidia纹理阴影实现对比
- selenium IDE扩展 随机数
- iOS/Mac Autolayout Constraints
- git 从 ochina 管理代码
- LeetCode (20) house robber (数组不相邻元素最大值)
- ads1.2
- 学习笔记(一)——STL
- 值得推荐的C/C++框架和库
- LeetCode-17 Letter Combinations of a Phone Number(手机拨码-DFS)
- css圆圈360度转
- spring @component的作用
- 使用Kindeditor上传图片
- 7.2 MaxSliceSum