[LeetCode]198. 打家劫舍(java实现)动态规划
1. 题目
2. 读题(需要重点注意的东西)
思路(dp):
在指数级别的方案中选择最优解 ===》 动态规划(dp)
每间房子有偷和不偷两种情况,因此选法是指数级别的,选择一个最优解,因此本题可以使用dp
解决。
主要是状态表示
:f[i] 表示必选i的所有方法,g[i] 表示必不选i的所有方法
3. 解法
---------------------------------------------------解法---------------------------------------------------
class Solution {
public int rob(int[] nums) {
int n = nums.length;
int[] f = new int[n];
int[] g = new int[n];
f[0] = nums[0];
g[0] = 0;
for(int i = 1;i < n;i++){
f[i] = g[i-1] + nums[i];
g[i] = Math.max(f[i-1],g[i-1]);
}
return Math.max(f[n - 1],g[n - 1]);
}
}
可能存在的问题:
4. 可能有帮助的前置习题
5. 所用到的数据结构与算法思想
- 动态规划