题解 | #设计有setAll功能的哈希表(C++)#

设计有setAll功能的哈希表

http://www.nowcoder.com/questionTerminal/7c4559f138e74ceb9ba57d76fd169967

  1. 创建一个类来实现哈希表中的功能
  2. 使用时间戳来记录setAll操作
  3. 具体细节看代码
#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;
}

全部评论

相关推荐

一个菜鸡罢了:哥们,感觉你的简历还是有点问题的,我提几点建议,看看能不能提供一点帮助 1. ”新余学院“别加粗,课程不清楚是否有必要写,感觉版面不如拿来写一下做过的事情,教育经历是你的弱势就尽量少写 2. “干部及社团经历”和“自我评价”删掉 3. 论文后面的“录用”和“小修”啥的都删掉,默认全录用,问了再说,反正小修毕业前肯定能发出来 4. 工作经验和研究成果没有体现你的个人贡献,着重包装一下个人贡献
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务