打家劫舍系列

383 阅读1分钟

动态规划,迭代的方法 dp[i] = max(num[i] + dp[i - 2], dp[i - 1])

打家劫舍1

要先记下dp[0]、dp[1]、dp[i]从第三位开始。

打家劫舍2

由于是环, 所以回出现三种情况:

1. 两边都不选

2.选左不选右

3.选右不选左

这三种情况归根结底就是[1:]、[:-1]两种。

打家劫舍3

由于是树状图,所以可以看作是树的每一层看做是一个节点。

1.偷这层,子层不能偷,偷子子层

2.不透这层,偷子层

监控器

和打家劫舍3异曲同工之妙

1.当前子树 root 有相机

2.当前子树root无相机,被父亲监控

3.当前子树 root 无相机,被儿子监控

参照: