979. 在二叉树中分配硬币;1136. 并行课程;759. 员工空闲时间

979. 在二叉树中分配硬币

核心思想:递归。定义dfs(node),返回值为以当前节点为根节点的节点个数和硬币个数。

那么这棵树至少需要移入或者移出abs(coins-nodes)个硬币,也就是这么多步,然后累计它们的总和即可。

979. 在二叉树中分配硬币;1136. 并行课程;759. 员工空闲时间_第1张图片

1136. 并行课程

核心思想:BFS,类似扩散,首先把没有prevCourse的统计出来,然后一轮一轮扩散,但是这里有个技巧就是用一个size来统计是否学完这些课程了。

979. 在二叉树中分配硬币;1136. 并行课程;759. 员工空闲时间_第2张图片

759. 员工空闲时间

核心思想:排序,然后一个个比较。由于这题有Interval这个类,所以我们先预处理一下。然后排序,维护一个当前区间的最右值,如果start大于这个值,就统计一下结果,然后更新,如果小于等于这个值就直接更新一下边界即可。

979. 在二叉树中分配硬币;1136. 并行课程;759. 员工空闲时间_第3张图片

你可能感兴趣的:(算法,python)