比数组模拟会多耗费一些时间,不过很方便
和开放寻址法解决冲突是一样的
#include <bits/stdc++.h>
using namespace std;
unordered_map<int, int> mp;
int n, k;
int main()
{
cin >> n;
while (n--)
{
char op;
int x;
cin >> op >> x;
if (op == 'I') //插入一个元素
mp[x] = ++k;
if (op == 'Q') //查询元素是否在集合中
{
if (mp.count(x) != 0)
cout << "Yes" << endl;
else
cout << "No" << endl;
}
}
return 0;
}
题外话:如果是在codeforces上最好不要直接使用unordered_map,应该还要自己套一个自己的哈希函数,防止被人构造数据卡成o(n),我就被卡过。
像数组模拟那样吗?
https://www.cnblogs.com/Lskkkno1/p/12667149.html
unordered_map本来就是哈希实现的,C++里有hash模版函数的
感谢大佬指点