题解 | #设计有setAll功能的哈希表(C++)#
设计有setAll功能的哈希表
http://www.nowcoder.com/questionTerminal/7c4559f138e74ceb9ba57d76fd169967
- 创建一个类来实现哈希表中的功能
- 使用时间戳来记录setAll操作
- 具体细节看代码
#include <bits/stdc++.h>
using namespace std;
class Set {
public:
int sAV, sAT, t;
unordered_map<int, vector<int>> s;
Set() { // 构造函数
sAV = 0; sAT = -1; t = 0;
}
void put(int k, int v) {
vector<int> tmp;
tmp.push_back(v);
tmp.push_back(++t);
s[k] = tmp;
}
int find(int k) {
if (s.find(k) == s.end()) return -1;
auto &tmp = s[k];
return tmp[1] < sAT ? sAV : tmp[0];
}
void setAll(int val) {
sAV = val;
sAT = ++t;
}
};
int main() {
int n; cin >> n;
Set s;
while (n--) {
int t; cin >> t;
if (t == 1) {
int a,b; cin >> a >> b;
s.put(a,b);
} else if (t == 2) {
int a; cin >> a;
cout << s.find(a) << '\n';
} else {
int a; cin >> a;
s.setAll(a);
}
}
return 0;
}