难度:中等。
标签:数组,哈希表。
将对应关系存于字典中。
正确解法:
class Solution {
public:
vector<int> restoreArray(vector<vector<int>>& adjacentPairs) {
int n = adjacentPairs.size();
unordered_map<int, vector<int>> maps;
for(int i = 0; i < n; ++i){
int a = adjacentPairs[i][0], b = adjacentPairs[i][1];
maps[a].emplace_back(b);
maps[b].emplace_back(a);
}
int last_num = 0;
for(auto it = maps.begin(); it != maps.end(); ++it){
if((*it).second.size() == 1){
last_num = (*it).first;
break;
}
}
vector<int> ans(n + 1);
ans[0] = last_num;
ans[1] = maps[ans[0]][0];
for(int i = 2; i <= n; ++i){
for(int j = 0; j < maps[ans[i - 1]].size(); ++j){
if(maps[ans[i - 1]][j] != ans[i - 2]){
ans[i] = maps[ans[i - 1]][j];
}
}
}
return ans;
}
};
结果: