Problem: 198. 打家劫舍
Reference
https://www.programmercarl.com/0198.%E6%89%93%E5%AE%B6%E5%8A%AB%E8%88%8D.html
思路
dp数组含义: 打劫到第i间的最大收益
递推公式: dp[i] = max(dp[i - 1], dp[i - 2] + nums[i]);
。
如果偷第i房间,那么dp[i] = dp[i - 2] + nums[i]
,即:第i-1房一定是不考虑的。
如果不偷第i房间,那么dp[i] = dp[i - 1]
,即考 虑i-1房。
初始化: dp[0]
一定是 nums[0]
,dp[1]
就是nums[0]和nums[1]
的最大值即: dp[1] = max(nums[0], nums[1])
;
复杂度
时间复杂度:
添加时间复杂度, 示例: $O(n)$
空间复杂度:
添加空间复杂度, 示例: $O(n)$
Code
1 | class Solution { |