R3-图篇
饭前一道题
思路:
单向构造
class Solution:
def restoreArray(self, adjacentPairs: List[List[int]]) -> List[int]:
m=n=len(adjacentPairs)
#n表示数组元素总数
n+=1
#统计
dict=defaultdict(int)
#存储关系哈希表
hashmap=defaultdict(list)
for a,b in adjacentPairs:
dict[a]+=1
dict[b]+=1
hashmap[a].append(b)
hashmap[b].append(a)
#数组开始的元素
start=-1
for i,v in dict.items():
if v==1:
start = i
break
ret=[0]*n
ret[0]=start
ret[1]=hashmap[start][0]
for i in range(2,n):
x=ret[i-1]
for j in hashmap[x]:
if j!=ret[i-2]:
ret[i]=j
return ret
ps:也能用双向构造(双指针法)---任取一个元素放在nums,然后两边遍历