原题
https://leetcode-cn.com/problems/house-robber/
思路
动态规划 dp数组
dp[i]=max(dp[i−2]+nums[i],dp[i−1])
题解
package cn.codemao.botmao.admin;
/**
* @version 1.0
* @author: zhangkun@codemao.cn
* @description:
* @create: 2021-04-15 11:38
**/
public class Code198 {
public static void main(String[] args) {
int[] nums = {10, 1, 2, 5, 1};
System.out.println(rob(nums));
}
public static int rob(int[] nums) {
int len = nums.length;
if (len == 1) {
return nums[0];
}
if (len == 2) {
return Math.max(nums[0], nums[1]);
}
int[] dp = new int[len];
dp[0] = nums[0];
dp[1] = Math.max(nums[0], nums[1]);
for (int i = 2; i < len; i++) {
dp[i] = Math.max(dp[i-2]+nums[i], dp[i-1]);
}
return dp[len-1];
}
}