198-213. House RobberI&II
来源:互联网 发布:沈阳系统i5编程实例 编辑:程序博客网 时间:2024/06/01 08:24
小偷偷东西不能偷相邻的住宅,否则会报警 求所偷物品的最大值,数组nums里的值表示这个家庭的被偷的价值
递推关系:
max[i]=Math.max(max[i-1],max[i-2]+nums[i])
HouseRobberII;
所偷的住宅是一个环形,故不能同时偷第一个家庭和最后一个家庭
分两种情况,偷第一个家庭不偷最后一个家庭,偷最后一个家庭不偷第一个家庭;
max1.length=max2.length=nums.length-1
max1[i]=Math.max(max[i-1],max[i-2]+nums[i]) 从第一个家庭开始计算截止到倒数第二个家庭
max2[i]=Math.max(max[i-1],max[i-2]+nums[i+1]) 从第二个家庭开始计算
public class Solution { public int rob(int[] nums) { if(nums.length==0)return 0; if(nums.length<=2) return Math.max(nums[0],nums[nums.length-1]); int []max1=new int[nums.length-1]; int []max2=new int[nums.length-1]; max1[0]=nums[0];max1[1]=Math.max(nums[0],nums[1]); max2[0]=nums[1];max2[1]=Math.max(nums[2],nums[1]); for(int i=2;i<max1.length;i++){ max1[i]=Math.max(max1[i-2]+nums[i],max1[i-1]); } for(int i=2;i<max1.length;i++){ max2[i]=Math.max(max2[i-2]+nums[i+1],max2[i-1]); } return Math.max(max1[max1.length-1],max2[max1.length-1]); }}
0 0
- 198-213. House RobberI&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
- light 1011 - Marriage Ceremonies
- Qt 大数据列表展示
- 算法-快速排序(load)
- coderforces-701A-水题
- Android知识要点整理(18)----Gradle 之依赖管理
- 198-213. House RobberI&II
- C++的拷贝构造函数
- js中的this关键字详解
- Day6、双重循环、while..do循环、随机数、缓冲区、一位数组、判断质数、算出最大公约数
- 各种编码之间的区别:ASCII、Unicode、UTF-8
- springMVC + maven helloworld程序
- 前端开发面试题 (题目列表页)
- Java 父类的构造函数执行要早于子类的实例变量初始化
- 【Leetcode】之Validate Binary Search Tree