1743. 从相邻元素对还原数组
-
思路:哈希,遍历adjacentPairs数组,将元素和相邻元素关系存入,然后找一个只有一个相邻元素的元素作为ans数组第一个,然后遍历查找哈希表。
-
代码:
public int[] restoreArray(int[][] adjacentPairs) { Map<Integer,List<Integer>> map = new HashMap<>(); for (int[] adjacentPair : adjacentPairs) { map.putIfAbsent(adjacentPair[0],new ArrayList<>()); map.putIfAbsent(adjacentPair[1],new ArrayList<>()); map.get(adjacentPair[0]).add(adjacentPair[1]); map.get(adjacentPair[1]).add(adjacentPair[0]); } int[] ans = new int[adjacentPairs.length+1]; for (Map.Entry<Integer, List<Integer>> entry : map.entrySet()) { Integer key = entry.getKey(); List<Integer> list = map.get(key); if(list.size()==1){ ans[0]=key; break; } } ans[1]=map.get(ans[0]).get(0); for(int i=2;i<ans.length;i++){ List<Integer> list = map.get(ans[i - 1]); ans[i]=ans[i-2]==list.get(0)?list.get(1):list.get(0); } return ans; }