原题
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];
}
}

本文介绍了一道LeetCode上的动态规划问题——House Robber,主要思路是利用动态规划数组dp[i]来表示抢到第i间房子能得到的最大金额。代码中给出了详细的解决方案,包括初始化dp数组并进行迭代更新的过程。最后返回dp[len-1]作为答案。
1040

被折叠的 条评论
为什么被折叠?



