首页 > 试题广场 >

设计有setAll功能的哈希表

[编程题]设计有setAll功能的哈希表
  • 热度指数:1412 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
哈希表常见的三个操作时put、get和containsKey,而且这三个操作的时间复杂度为O(1)。现在想加一个setAll功能,就是把所有记录value都设成统一的值。请设计并实现这种有setAll功能的哈希表,并且put、get、containsKey和setAll四个操作的时间复杂度都为O(1)。
[友情提示]: C++选手若有需要可以使用unordered_map替换map来将复杂度从O(log n)降为O(1)

输入描述:
第一行一个整数N表示操作数。
接下来N行,每行第一个数字opt代表操作类型
若opt=1,接下来有两个整数x, y表示设置key=x对应的value=y
若opt=2,接下来一个整数x,表示查询key=x对应的value,若key=x不存在输出-1
若opt=3,接下来一个整数x,表示把加入过的所有的key对应的value都设置为x


输出描述:
对于每个操作2,输出一个整数表示答案
示例1

输入

6
1 1 2
2 1
2 2
3 4
2 1
2 2

输出

2
-1
4
-1

备注:

头像 牛客883901697号
发表于 2024-06-03 16:38:30
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWr 展开全文
头像 守re
发表于 2024-10-13 12:00:40
#include <bits/stdc++.h> using namespace std; unordered_map<int,vector<int>> Map; int SetAllValue = 0,SetAllTime = -1,cnt = 0; voi 展开全文
头像 牛客579577851号
发表于 2023-12-29 14:55:16
创建一个类来实现哈希表中的功能 使用时间戳来记录setAll操作 具体细节看代码 #include <bits/stdc++.h> using namespace std; class Set { public: int sAV, sAT, t; unordered_map< 展开全文
头像 wangdx
发表于 2021-03-19 16:53:45
由于C++的时间戳最多精确到毫秒,程序运行时间不足1毫秒,所以使用自定义的int计数。 #include <iostream> #include <unordered_map> #include <time.h> using namespace std; cla 展开全文
头像 yabo083
发表于 2024-05-28 16:39:07
import java.io.*; import java.util.HashMap; public class Main { public static HashMap<Integer, int[]> map = new HashMap<>(); pu 展开全文
头像 吴清忠201808271120204
发表于 2024-04-10 19:21:57
#include <iostream> #include <unordered_map> #include <utility> using namespace std; class MyMap { // pair <value, cnt> 展开全文