Leetcode 705. 设计哈希集合
Published on 2022-06-28 09:10 in 分类: C/C++ with 萧海~
分类: C/C++

Leetcode 705. 设计哈希集合

    在这里插入图片描述
    不使用任何内建的哈希表库设计一个哈希集合(HashSet)。

    实现 MyHashSet 类:

    • void add(key) 向哈希集合中插入值 key 。
    • bool contains(key) 返回哈希集合中是否存在这个值 key 。
    • void remove(key) 将给定值 key 从哈希集合中删除。如果哈希集合中没有这个值,什么也不做。

    示例:

    输入:
    ["MyHashSet", "add", "add", "contains", "contains", "add", "contains", "remove", "contains"]
    [[], [1], [2], [1], [3], [2], [2], [2], [2]]
    输出:
    [null, null, null, true, false, null, true, null, false]
    解释:
    MyHashSet myHashSet = new MyHashSet();
    myHashSet.add(1); // set = [1]
    myHashSet.add(2); // set = [1, 2]
    myHashSet.contains(1); // 返回 True
    myHashSet.contains(3); // 返回 False ,(未找到)
    myHashSet.add(2); // set = [1, 2]
    myHashSet.contains(2); // 返回 True
    myHashSet.remove(2); // set = [1]
    myHashSet.contains(2); // 返回 False ,(已移除)

    提示:

    • 0 <= key <= 10^6
    • 最多调用 10^4 次 add、remove 和 contains

    Code:

    class MyHashSet {
    public:
    MyHashSet() {
    }
    void add(int key) {
    int cnt=count(vec.begin(),vec.end(),key);
    if(!cnt)
    vec.push_back(key);
    }
    void remove(int key) {
    vector<int>::iterator it=find(vec.begin(),vec.end(),key);
    if(it!=vec.end())
    {
    vec[it-vec.begin()]=-1;
    }
    }
    bool contains(int key) {
    return count(vec.begin(),vec.end(),key)!=0;
    }
    private:
    vector<int>vec;
    };
    /**
    * Your MyHashSet object will be instantiated and called as such:
    * MyHashSet* obj = new MyHashSet();
    * obj->add(key);
    * obj->remove(key);
    * bool param_3 = obj->contains(key);
    */
    posted @   萧海~  阅读(20)  评论(0编辑  收藏  举报
    相关博文:
    阅读排行:
    · 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
    · 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
    · Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
    · 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
    · AI技术革命,工作效率10个最佳AI工具
    点击右上角即可分享
    微信分享提示
    电磁波切换