[算法数据结构] 结束二刷贪心算法,开启动态规划!

94 阅读1分钟

9.14 号总结贪心算法,并把监控二叉树这道题目做了。并开启了动态规划的二刷。

  • 监控二叉树

在自己推导的过程中,领悟到尽可能将摄像头安在靠近叶子节点。因为这样能监控到的节点最多。但是没有想到如何和数的遍历结合到一起。关键在于判断节点状态,然后在这个过程中累加摄像机的个数。因为要从叶子节点开始遍历,因此遍历顺序选择后序遍历。

还有一个难点在于确定节点的状态。0:该节点无覆盖,1:本节点有摄像头 2:本节点有覆盖。还有一个重要的点在遇到空节点时返回什么值。我们希望在叶子节点的父节点安装摄像头,因此,为了让叶子节点是无覆盖的状态,空节点的状态应该是有覆盖。

  • 动态规划 - 斐波那契数列

二刷时感觉思路明显清晰很多,再结合五部曲套路,1.dp数组以及下标含义 2. 确定递归公式 3.如何初始化 4. 确定遍历顺序 5. 举例推到dp数组。

1.dp[i] 第i个数是多少? 2.dp[i] = dp[i - 1] + d[i - 2] 3.初始化 dp[0] = 0 dp[1] = 1 4.从前向后遍历 5. 举例

  • 爬楼梯

本质上和斐波那契类似,这里就不赘述了。继续加油!把动态规划做完二刷就快结束了!