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 == nadjacentPairs.length == n - 1adjacentPairs[i].length == 22 <= n <= 105-105 <= nums[i], ui, vi <= 105- 题目数据保证存在一些以
adjacentPairs作为元素对的数组nums
哈希链表
哈希表统计每个元素的邻接元素的数量,查询哈希表中邻接元素的数量为1 的元素,即为第一个元素(第一个元素只与一个元素相邻接),然后利用深度优先遍历,找到所有节点。为了去重,使用set来保证某个元素没有被遍历过。
1 | class Solution { |
优雅的解法
1 | class Solution { |