|
1 | 1 | classSolution {
|
2 |
| -publicint[]restoreArray(int[][]adjacentPairs) { |
3 |
| -Map<Integer,List<Integer>>map =newHashMap<>(); |
4 |
| -for (int[]pair :adjacentPairs) { |
5 |
| -map.computeIfAbsent(pair[0],k ->newArrayList<>()).add(pair[1]); |
6 |
| -map.computeIfAbsent(pair[1],k ->newArrayList<>()).add(pair[0]); |
| 2 | +publicint[]restoreArray(int[][]adjacentPairs) { |
| 3 | +intn =adjacentPairs.length +1; |
| 4 | +Map<Integer,List<Integer>>map =newHashMap<>(); |
| 5 | +for (int[]pair :adjacentPairs) { |
| 6 | +map.computeIfAbsent(pair[0],k ->newArrayList<>()).add(pair[1]); |
| 7 | +map.computeIfAbsent(pair[1],k ->newArrayList<>()).add(pair[0]); |
| 8 | + } |
| 9 | +Queue<Integer>queue =newLinkedList<>(); |
| 10 | +intfirstElement =map.entrySet() |
| 11 | + .stream() |
| 12 | + .filter(entry ->entry.getValue().size() ==1) |
| 13 | + .map(Map.Entry::getKey) |
| 14 | + .findFirst() |
| 15 | + .orElse(-1); |
| 16 | +queue.add(firstElement); |
| 17 | +Set<Integer>set =newHashSet<>(); |
| 18 | +int[]result =newint[n]; |
| 19 | +intidx =0; |
| 20 | +while (!queue.isEmpty()) { |
| 21 | +intremoved =queue.remove(); |
| 22 | +if (set.contains(removed)) { |
| 23 | +continue; |
| 24 | + } |
| 25 | +result[idx++] =removed; |
| 26 | +set.add(removed); |
| 27 | +queue.addAll(map.get(removed)); |
| 28 | + } |
| 29 | +returnresult; |
7 | 30 | }
|
8 |
| -inthead =map.keySet().stream().filter(k ->map.get(k).size() ==1).findFirst().orElse(-1); |
9 |
| -Set<Integer>visited =newHashSet<>(); |
10 |
| -int[]result =newint[map.size()]; |
11 |
| -intidx =0; |
12 |
| -Queue<Integer>queue =newLinkedList<>(); |
13 |
| -queue.add(head); |
14 |
| -while (!queue.isEmpty()) { |
15 |
| -intremoved =queue.remove(); |
16 |
| -if (visited.contains(removed)) { |
17 |
| -continue; |
18 |
| - } |
19 |
| -result[idx++] =removed; |
20 |
| -visited.add(removed); |
21 |
| -queue.addAll(map.get(removed)); |
22 |
| - } |
23 |
| -returnresult; |
24 |
| - } |
25 | 31 | }
|