思路:
- “第一个”暗示使用队列
- “唯一”暗示使用无序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]++;
}
};