leetcode每日一题--相邻元素对问题(哈希表遍历问题)
Posted C_YCBX Py_YYDS
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode每日一题--相邻元素对问题(哈希表遍历问题)相关的知识,希望对你有一定的参考价值。
题目
题目分析
看了这张图后,题目就比较好理解了
解题分析:
- 用哈希表记录与它相邻的所有元素,当与该元素相邻的只有一个时,则肯定是第一个位置或者最后一个位置的元素。其余都是有左右两边的元素相邻。
- 根据这个关系建立了表后,我们只需要找到第一个位置的元素,便能根据表一直递推到最后一个元素。
解题代码
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每日一题--相邻元素对问题(哈希表遍历问题)的主要内容,如果未能解决你的问题,请参考以下文章