打家劫舍
当前位置偷与不偷取决于上一家的状态 也就是有递推式 考虑dp
当前位置如果偷 就是找i-2的位置的钱+当前的nums[i]
如果不偷 就是i-2的钱
两个情况取最大值
初始值如果只有0或1家人就特殊处理
2家及以上 初始0就是nums[0] 1就是max(nums[0], nums[1])
打家劫舍 II
这里首尾相连 考虑两种情况 含头不含尾 含尾不含头
如果在中间进行dp递推 是会包含在上述两种情况的
打家劫舍 III
后序遍历
这里只需要两个长度就可以表示节点偷与不偷的状态 0不偷 1偷
因为遍历二叉树是递归遍历 也就是系统栈里会有每一层节点的这个状态数组