力扣-198-强盗抢劫

题目:
198. House Robber(easy)


解题思路:
典型动态规划。
题目中规定:在不能偷窃相邻的房屋的前提下,求最大偷窃量。
定义dp数组来存储最大的偷窃量,则dp[i]表示抢到第i个住户时的最大偷窃量。
如果偷窃了第i-1个住户,就不能再偷窃第i个住户,所以:
dp[i] = max(dp[i-2]+nums[i],dp[i-1])


代码:

1
2
3
4
5
6
7
8
9
10
Java:
public int rob(int[] nums){
int pre2 = 0, pre1 = 0;
for(int i = 0;i< nums.length;i++){
int cur = Math.max(pre2+nums[i],pre1);
pre2 = pre1;
pre1 = cur;
}
return pre1;
}