
方法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];
}
}
总结:
- 无
本文介绍了一种使用动态规划方法解决经典抢劫问题的算法。通过分析问题特点,采用一维数组进行状态转移,实现了高效求解。文章给出了具体实现代码,并讨论了如何进一步优化空间复杂度。
868

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



