思路:
- “第一个”暗示使用队列
- “唯一”暗示使用无序map(键值不相等 不可重复)进行计数
代码:
class FirstUnique {
unordered_map<int,int> map;
queue<int> q;
public:
//队列初始化 map用于queue元素计数
FirstUnique(vector<int>& nums) {
for(int n : nums){
q.push(n);
map[n]++;
}
}
//返回第一个唯一整数
int showFirstUnique() {
//判断队列是否为空
if(q.empty()) return -1;
//从队列头开始寻找唯一整数
while(!q.empty() && map[q.front()] >1)
q.pop();
return q.front();
}
//队列元素添加
void add(int value) {
q.push(value);
map[value]++;
}
};
本文介绍了一种使用C++实现的高效算法,通过队列和无序映射数据结构来找到给定整数数组中的第一个唯一元素。思路巧妙地结合了队列的先进先出特性与无序映射的唯一计数功能,适合处理数据重复的问题。
418

被折叠的 条评论
为什么被折叠?



