体育课共有个考核项目,编号为到,考核中每两个项目被划分为一组得到分组数组,现规定若想完成项目,必须先完成。保证所有分组互不相同,若分组情况能顺利完成考核,请返回true否则返回false。
数据范围:
3,[[2,1]]
true
要先完成1号项目,再完成2号项目,而0号项目不受约束,故可以完成项目返回Yes
3,[[1,0], [0,1]]
false
第一个分组要求先完成0号项目,再完成1号项目;而第二个分组要求先完成1号项目,再完成0号项目,自相矛盾,故不可以完成项目返回No
class Solution: def canFinish(self , numProject: int, groups: List[List[int]]) -> bool: # write code here projects = {x:0 for x in range(numProject)} while len(projects) > 0: for a, b in groups: if a in projects and b in projects: projects[a] = 1 valid = False for i in list(projects.keys()): if projects[i] == 0: valid = True del projects[i] if not valid: break projects = {x:0 for x in projects} return len(projects) == 0