方法1: dp。非常明显的dp问题,其实也可以dfs+memo来做,但是我这边直接一步到位了。时间复杂m,空间复杂m,m为input数组长度。当然空间复杂度可以优化成1,直接在原数组上修改,复盘时候自己去实现。
class Solution {
public int rob(int[] nums) {
if(nums.length == 0) return 0;
int[] dp = new int[nums.length + 1];
dp[0] = 0;
dp[1] = nums[0];
for(int i = 2; i <= nums.length; i++){
dp[i] = Math.max(nums[i - 1] + dp[i - 2], dp[i - 1]);
}
return dp[nums.length];
}
}
总结:
- 无