1use std::collections::HashMap;2use std::collections::HashSet;34impl Solution {5pub fn restore_array(adjacent_pairs: Vec<Vec<i32>>) -> Vec<i32> {6let mut mp = HashMap::<i32, Vec<i32>>::new();78for p in adjacent_pairs {9mp.entry(p[0]).or_insert(vec![]).push(p[1]);10mp.entry(p[1]).or_insert(vec![]).push(p[0]);11}1213let mut start = 0;14for (k, v) in &mp {15if v.len() == 2 {16continue;17}18start = *k;19break;20}2122let mut s = HashSet::new();23let mut ret = vec![start];24s.insert(start);2526while mp.contains_key(&start) {27let mut v = mp.get(&start).unwrap();28let mut done = true;29for u in mp.get(&start).unwrap() {30if s.contains(&u) {31continue;32}33start = *u;34ret.push(*u);35s.insert(*u);36done = false;37break;38}39if done {40break;41}42}4344ret45}46}