leetcode每日一题--相邻元素对问题(哈希表遍历问题)

Posted C_YCBX Py_YYDS

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode每日一题--相邻元素对问题(哈希表遍历问题)相关的知识,希望对你有一定的参考价值。

题目

题目分析

看了这张图后,题目就比较好理解了

解题分析:

  1. 用哈希表记录与它相邻的所有元素,当与该元素相邻的只有一个时,则肯定是第一个位置或者最后一个位置的元素。其余都是有左右两边的元素相邻。
  2. 根据这个关系建立了表后,我们只需要找到第一个位置的元素,便能根据表一直递推到最后一个元素。

解题代码

class Solution {
public:
    vector<int> restoreArray(vector<vector<int>>& adjacentPairs) {
        unordered_map<int,vector<int>>check;
        for(auto&& t:adjacentPairs){
            check[t[0]].emplace_back(t[1]);
            check[t[1]].emplace_back(t[0]);
        }
        //找到起点和终点
        int start;
        int end;
        bool f = false;
        for(auto&&[key,val]:check){
            if(val.size()==1 and !f){
                start = key;
                f = true;
            }else if(val.size()==1 and f){
                end = key;
                break;
            }
        }
        //开始递推
        vector<int>res;
        res.emplace_back(start);
        int pre = start;
        while(start!=end){
            int temp = start;
            start = check[start][0] != pre?check[start][0]:check[start][1];
            res.emplace_back(start);
            pre = temp;
        }
        return res;
    }
};

以上是关于leetcode每日一题--相邻元素对问题(哈希表遍历问题)的主要内容,如果未能解决你的问题,请参考以下文章

《LeetCode之每日一题》:117.颜色分类

LeetCode每日一题

《LeetCode之每日一题》:286.移除链表元素

《LeetCode之每日一题》:151.寻找峰值

《LeetCode之每日一题》:286.移除链表元素

《LeetCode之每日一题》:134.移除链表元素