vector<int> restoreArray(vector<vector<int>>& adjacentPairs) {
int n = adjacentPairs.size();
vector<int> ans(n + 1);
map<int, vector<int>> m;
for (int i = 0; i < n; i++) {
m[adjacentPairs[i][0]].push_back(adjacentPairs[i][1]);
m[adjacentPairs[i][1]].push_back(adjacentPairs[i][0]);
}
for (auto it = m.begin(); it != m.end(); it++) {
if ((*it).second.size() == 1) {
ans[0] = (*it).first;
break;
}
}
ans[1] = m[ans[0]][0];
for (int i = 2; i <= n; i++) {
auto adj = m[ans[i - 1]];
for (int j = 0; j < m[ans[i - 1]].size(); j++) {
if (m[ans[i - 1]][j] != ans[i - 2]) {
ans[i] = m[ans[i - 1]][j];
}
}
}
return ans;
}
n个不同元素,有两个数只出现一次,这两个就是最边缘的两个,其它数出现两次 。