8.14周一
- 198.打家劫舍
- 213.打家劫舍II
- 337.打家劫舍III
详细布置
198.打家劫舍
题目:不能打劫相邻两家,问最多能得到多少钱
题解:
1、dp[i]表示考虑进第i个房子,最多能得到的金额
2、dp[i] = max(dp[i-1], dp[i-2]+nums[i])。意思是打劫第i家:dp[i-2]+nums[i];不打劫第i家:dp[i-1]
3、dp[0]=nums[0];dp[1]=max(nums[0],nums[1])
4、从前往后遍历
5、如果nums数组为空,返回0;如果大小为1,返还nums[0]
213.打家劫舍II
题目:房子连成环了
题解:
1、分为两种情况:只考虑首,不考虑尾;只考虑尾,不考虑首。
2、当数组大小为2时,返回max(nums[0],nums[1])
337.打家劫舍III
题目:房子成二叉树了,相邻节点(一根线连起来的节点)不能同时偷
题解:
太难了,没听懂。