House Robber
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.
思路:
1、条件:不能同时获取相邻的金钱
2、动态规划:当前节点的金钱数量等于当前的金额加上前面的金额最大值
3、最后遍历一次求出最大值即为结果
想到一种先排序,把下标记录下来,然后从后往前遍历,将下标差不为1的相加,wrong answer ,后面才想到用动态规划,看来动态规划还是不太熟
public class Solution {
public int rob(int[] nums) {
if(nums.length == 2) return Math.max(nums[0], nums[1]) ;
if(nums.length == 1) return nums[0] ;
if(nums.length == 0) return 0 ;
int[] indexs = new int[nums.length] ;
for(int i = 0; i < nums.length; i ++){
indexs[i] = nums[i] ;
}
int max = nums[0] ;
for(int i = 2; i < nums.length; i ++){
indexs[i] = indexs[i] + max ;
max = Math.max(max, indexs[i - 1]) ;
}
int res = indexs[0] ;
for(int i = 1; i < indexs.length; i ++){
if(indexs[i] > res) res = indexs[i] ;
}
return res;
}
}