小编tho*_*ang的帖子

Union使用Python查找实现

所以这就是我想要做的:我有一个包含几个等价关系的列表:

l = [[1, 2], [2, 3], [4, 5], [6, 7], [1, 7]]
Run Code Online (Sandbox Code Playgroud)

我想结合共享一个元素的集合.这是一个示例实现:

def union(lis):
  lis = [set(e) for e in lis]
  res = []
  while True:
    for i in range(len(lis)):
      a = lis[i]
      if res == []:
        res.append(a)
      else:
        pointer = 0 
        while pointer < len(res):
          if a & res[pointer] != set([]) :
            res[pointer] = res[pointer].union(a)
            break
          pointer +=1
        if pointer == len(res):
          res.append(a)
     if res == lis:
      break
    lis,res = res,[]
  return res
Run Code Online (Sandbox Code Playgroud)

它打印出来

[set([1, 2, 3, …
Run Code Online (Sandbox Code Playgroud)

python list union-find

10
推荐指数
3
解决办法
4853
查看次数

标签 统计

list ×1

python ×1

union-find ×1