LeetCode.198. 打家劫舍
作者:互联网
难度:medium
动态规划的方法,注释写的很清楚,要注意的是nums只有一个元素的特殊情况;
Java:
class Solution {
public int rob(int[] nums) {
int length = nums.length;
//dp[i]为盗窃前i号房屋所能偷窃到的最高金额
int[] dp = new int[length + 1];
if (length <= 1) {
return nums[0];
}
//初始化
dp[0] = nums[0];
dp[1] = Math.max(nums[0], nums[1]);
//dp[i] = max(dp[i - 1], dp[i - 2] + nums[i])
for (int i = 2; i < length; i++) {
dp[i] = Math.max(dp[i - 1], dp[i - 2] + nums[i]);
}
return dp[length - 1];
}
}
复杂度分析:
- 时间复杂度:O(n)
- 空间复杂度:O(n)
标签:nums,int,LeetCode.198,复杂度,length,打家劫舍,dp 来源: https://blog.csdn.net/weixin_45867071/article/details/122155077