Restore the Array From Adjacent Pairs(C++从相邻元素对还原数组)

比眉伴天荒 2022-11-07 13:21 246阅读 0赞

解题思路:

(1)dfs

  1. class Solution {
  2. public:
  3. vector<int> restoreArray(vector<vector<int>>& adjacentPairs) {
  4. unordered_map<int,int> mp;
  5. unordered_map<int,vector<int>>mt;
  6. for(int i=0;i<adjacentPairs.size();i++) {
  7. mp[adjacentPairs[i][0]]++;
  8. mp[adjacentPairs[i][1]]++;
  9. mt[adjacentPairs[i][0]].push_back(adjacentPairs[i][1]);
  10. mt[adjacentPairs[i][1]].push_back(adjacentPairs[i][0]);
  11. }
  12. int start=0;
  13. for(auto it=mp.begin();it!=mp.end();it++) {
  14. if(it->second==1) start=it->first;
  15. it->second=0;
  16. }
  17. vector<int> v(1,start);
  18. mp[start]=1;
  19. while((mt[start].size()==1 && mp[mt[start][0]]==0) || (mp[mt[start][0]]==0 || mp[mt[start][0]]==1)) {
  20. if(mp[mt[start][0]]==0) {
  21. v.push_back(mt[start][0]);
  22. mp[mt[start][0]]=1;
  23. start=mt[start][0];
  24. } else if(mt[start].size()==1) return v;
  25. else {
  26. v.push_back(mt[start][1]);
  27. mp[mt[start][1]]=1;
  28. start=mt[start][1];
  29. }
  30. }
  31. return v;
  32. }
  33. };

发表评论

表情:
评论列表 (有 0 条评论,246人围观)

还没有评论,来说两句吧...

相关阅读