#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param prerequisites int整型二维数组
# @param n int整型
# @return int整型一维数组
# 步骤
# 1.cur,pre都在rs,若cur在pre前面,则存在环,直接返回空
# 2.cur在rs,pre不在rs,则把pre插入cur前面
# 3.cur不在rs ,pre在rs,则直接把cur插入到pre后面
# 4.cur,pre都不在rs,则直接把pre,cur加入rs末尾
# 5.遍历0~n,若出现不存在rs的值i,说明i没有依赖关系,直接加入rs末尾即可
class Solution:
def findOrder(self, prerequisites: List[List[int]], n: int) -> List[int]:
rs = []
for cur, pre in prerequisites:
if cur in rs:
if pre in rs: # 1
if rs.index(cur) < rs.index(pre):
return []
else: # 2
rs.insert(rs.index(cur), pre)
else:
if pre in rs: # 3
rs.insert(rs.index(pre) + 1, cur)
else: # 4
rs.append(pre)
rs.append(cur)
for i in range(n): # 5
if i not in rs:
rs.append(i)
return rs
# write code here