题目
有一个数组有n个互不相同的元素,给定这n个元素的相邻关系adjPairs[i] =[a_i, b_i],表示a_i和b_i相邻,adjPairs数组长度为n-1,返回任意一个满足要求的数组 python
eg:
Input: adjPairs = [[4,-2],[1,4],[-3,1]]
Output: [-2,4,1,-3]
题解
当时面试没做出来 后来面试结束自己又思考了一会,觉得这题还挺难的
我用的是哈希表 在python里使用字典建立键值对
key表示列表中的每个数,value表示这个数左右相邻的邻居值的列表
当value长度为1时说明为列表左右端点值
具体python代码实现如下:
def getlist(li):
if not li:return []
dic,res,count={},[],0
for elem in li:
if elem[0] in dic:
dic[elem[0]].append(elem[1])
else:
tmp=[]
tmp.append(elem[1])
dic[elem[0]]=tmp
if elem[1] in dic:
dic[elem[1]].append(elem[0])
else:
tmp=[]
tmp.append(elem[0])
dic[elem[1]]=tmp
for key,value in dic.items():
if len(value)==1:
res.append(key)
res.append(dic.pop(key)[0])
break
for key,value in dic.items():
if len(value)==2:
if key==res[-1]:
for i in range(2):
if value[i]!=res[len(res)-2]:
res.append(value[i])
break
return res
if __name__=='__main__':
arr=[[4,-2],[1,4],[-3,1]]
result=getlist(arr)
print(result)