1042 不邻接植花
输入:N = 3, paths = [[1,2],[2,3],[3,1]] 输出:[1,2,3]。花田之间有小路相连就不要种一样的花。
class Solution:
def gardenNoAdj(self, n: int, paths: List[List[int]]) -> List[int]:
if not paths: return [1]*n # 全种一样的
res = [0 for i in range(n)] # res肯定是长度n
garden = [[] for i in range(n)] # 记录第i个的邻接花园j的idx(i的子节点j)
for i,j in paths:
garden[i-1].append(j-1) # 无向图,所以相互指向
garden[j-1].append(i-1)
for i in range(n):
# 邻接花园的res花朵要避免 剩下的可能进行pop随机选
res[i] = ({
1,2,3,4}-{
res[j] for j in garden[i]}).pop()
return res
210 课程表2
输入: 2, [[1,0]] 输出: [0,1]。要修2门课,1的课程要求为0(1的父结点为0)。那么课程表为先0再1。
class Solution:
def findOrder(