1743. 从相邻元素对还原数组
难度:中等(竞赛题)
存在一个由 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
。如果存在多种解答,返回 其中任意一个 即可。
示例 1:
1 | 输入:adjacentPairs = [[2,1],[3,4],[3,2]] |
示例 2:
1 | 输入:adjacentPairs = [[4,-2],[1,4],[-3,1]] |
示例 3:
1 | 输入:adjacentPairs = [[100000,-100000]] |
提示:
nums.length == n
adjacentPairs.length == n - 1
adjacentPairs[i].length == 2
2 <= n <= 105
-105 <= nums[i], ui, vi <= 105
- 题目数据保证存在一些以
adjacentPairs
作为元素对的数组nums
哈希链表
哈希表统计每个元素的邻接元素的数量,查询哈希表中邻接元素的数量为1 的元素,即为第一个元素(第一个元素只与一个元素相邻接),然后利用深度优先遍历,找到所有节点。为了去重,使用set来保证某个元素没有被遍历过。
1 | class Solution { |
优雅的解法
1 | class Solution { |