文档章节

刷leetcode第705题- 设计哈希集合

锟斤拷烫烫烫
 锟斤拷烫烫烫
发布于 02/24 08:05
字数 268
阅读 18
收藏 0

这个我可能做的不是很符合题意,虽然AC了,但是没有去用到hash函数之类的方式。同样使用了位运算来搞定这一切,简单易懂。上代码如下:

typedef char MyHashSet;

/** Initialize your data structure here. */
MyHashSet* myHashSetCreate() {
    int size = 100000/8+1;
    MyHashSet* obj = (MyHashSet*)malloc(sizeof(MyHashSet)*size);
    memset (obj,0,size);
    return obj;
}

void myHashSetAdd(MyHashSet* obj, int key) {
    int position = key/8;
    char area = key%8;
    char mask = 1<<area;
    *(obj+position) |=mask;
}

void myHashSetRemove(MyHashSet* obj, int key) {
    int position = key/8;
    char area = key%8;
    char mask = ~(1<<area);
    *(obj+position)&=mask;
}

/** Returns true if this set contains the specified element */
bool myHashSetContains(MyHashSet* obj, int key) {
    int position = key/8;
    char area = key%8;
    char mask = 1<<area;
    return (*(obj+position)&mask) == mask;
}

void myHashSetFree(MyHashSet* obj) {
    free(obj);
}

/**
 * Your MyHashSet struct will be instantiated and called as such:
 * struct MyHashSet* obj = myHashSetCreate();
 * myHashSetAdd(obj, key);
 * myHashSetRemove(obj, key);
 * bool param_3 = myHashSetContains(obj, key);
 * myHashSetFree(obj);
 */

© 著作权归作者所有

共有 人打赏支持
锟斤拷烫烫烫
粉丝 6
博文 38
码字总数 10158
作品 0
信阳
后端工程师
私信 提问
LeetCode | 你不得不了解的哈希算法 !

⒈哈希是什么 ? 问大家一个问题 。如果手机上存储了 1000 个联系人 ,现在要你给小詹打个电话 ,跟他说 ,他老婆喊他回家吃饭 。你会怎么做 ? 当然是按姓名搜索呀 !(假装你有小詹电话号码...

技术小能手
2018/11/29
0
0
[LeetCode] Two Sum IV - Input is a BST 两数之和之四 - 输入是二叉搜索树

Given a Binary Search Tree and a target number, return true if there exist two elements in the BST such that their sum is equal to the given target. Example 1: Input: / 3 6/ 2 4......

机器的心脏
2017/12/06
0
0
[CareerCup] 11.2 Sort Anagrams Array 异位词数组排序

11.2 Write a method to sort an array of strings so that all the anagrams are next to each other. 这道题让我们给一个字符串数组排序,让所有的变位词Anagrams排在一起,关于变位词,L...

机器的心脏
2017/12/15
0
0
零基础python刷leetcode -- 1. Two Sum

算法很重要,但是每天也需要学学python,于是就想用python刷leetcode 的算法题,从第一题开始,从简单题开始零基础python刷leetcode之旅。 leetcode 地址 1.第一题:Two Sum Two Sum 首先过一...

linzechi
2017/11/19
0
0
算法之路

最近在GitHub上看到的某位学友的算法学习规划,贴过来与各位共勉。有新的内容可以文末留言补充。 学习方法 把所有经典算法写一遍 看算法有关源码 加入算法学习社区,相互鼓励学习 看经典书籍...

李序锴
2017/11/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

深入 理解char * ,char ** ,char a[ ] ,char *a[] 的区别

C语言中由于指针的灵活性,导致指针能代替数组使用,或者混合使用,这些导致了许多指针和数组的迷惑,因此,刻意再次深入探究了指针和数组这玩意儿,其他类型的数组比较简单,容易混淆的是字...

天王盖地虎626
19分钟前
1
0
关于我这三年的架构历程(待完成)

从16年7月实习至今,快三年的开发经历中,经手了好几个项目。目前有幸作为一个项目的负责人,完成了一个项目的完全架构设计。因此想记录下这份架构设计中的点点面面。 总架构: 基于DNS的负载...

赵熠熠
19分钟前
0
0
springboot 使用 flyway 进行数据库版本管理

要在启动时自动运行Flyway数据库迁移,请将其添加 org.flywaydb:flyway-core到类路径中。 迁移是表单中的脚本V<VERSION>__<NAME>.sql(使用<VERSION>下划线分隔的版本,例如“1”或“2_1”)...

NotFound403
39分钟前
4
0
spring 5.1.5版本(二)

spring 5.1.5版本(一) spring 5.1.5版本(二) spring 5.1.5版本(三) 对象创建方式 方式一 applicationContext.xml <?xml version='1.0' encoding='UTF-8'?><beans xmlns="http://ww......

gwl_
40分钟前
0
0
CMake生成Mingw用的Make文件

CMake 在win下 默认会生成vc++的nmake用的make 当没安装时 就会报 -- Building for: NMake Makefiles -- The C compiler identification is unknown -- The CXX compiler identification is......

shzwork
58分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部