题目:
存在一个由 n 个不同元素组成的整数数组 nums ,但你已经记不清具体内容。好在你还记得 nums 中的每一对相邻元素。
给你一个二维整数数组 adjacentPairs ,大小为 n - 1 ,其中每个 adjacentPairs[i] = [ui, vi] 表示元素 ui 和 vi 在 nums 中相邻。
题目数据保证所有由元素 nums[i] 和 nums[i+1] 组成的相邻元素对都存在于 adjacentPairs 中,存在形式可能是 [nums[i], nums[i+1]] ,也可能是 [nums[i+1], nums[i]] 。这些相邻元素对可以 按任意顺序 出现。
返回 原始数组 nums 。如果存在多种解答,返回 其中任意一个 即可。
解答:
class Solution:
def restoreArray(self, adjacentPairs: List[List[int]]) -> List[int]:
connect = defaultdict(set)
for a,b in adjacentPairs:
connect[a].add(b)
connect[b].add(a)
point = min(connect.keys(), key=lambda x:(len(connect[x]), x))
explored = {point}
ans = [point]
cur = point
#print(connect,point)
while len(ans) < len(connect.keys()):
cur = (connect[cur] - explored).pop()
explored.add(cur)
ans.append(cur)
return ans