输入:
要求:多组操作:put(key, value)、get(key)、remove(key)
输出:
思路:和 LC.705(哈希集合)一样,我继续偷懒,用; 一个 vector<pair<int,int>> 做容器模拟。
put(key, value)
-
先用
get(key)判断 key 是否存在-
如果不存在 → 直接
push_back({key, value})
-
-
如果存在 → 再遍历 tmp,把对应 key 的 value 改掉
get(key)
直接线性遍历 tmp:
-
找到
key == t.first就返回t.second -
找不到就返回
-1
remove(key)
-
遍历
-
找到 key
-
把 key 置为
-1(代表无效)
复杂度:
时间复杂度:put:O(n) get:O(n) remove:O(n)
空间复杂度:O(n)
class MyHashMap {
private:
vector<pair<int, int>> tmp;
public:
MyHashMap() {
}
void put(int key, int value) {
if (get(key) == -1) {
tmp.push_back({key, value});
return;
}
for (auto& t:tmp) {
if (t.first == key) {
t.second = value;
}
}
}
int get(int key) {
for (auto t:tmp) {
if (t.first == key) {
return t.second;
}
}
return -1;
}
void remove(int key) {
for (auto& t:tmp) {
if (t.first == key) {
t.first = -1;
}
}
}
};
337

被折叠的 条评论
为什么被折叠?



