在算法练习当中,常常会遇到用 hashmap 来实现的思路,通过 key-value 方便快捷的查找,增加,删除特定数据。
在高级语言当中,c++或java都有一套 hashmap API可供使用,但是 C 语言却没有系统的
不过开源项目为我们提供了这套工具,利用这套工具,可以方便的将自定义数据结构 hash 话
官网文档:
uthashhttps://troydhanson.github.io/uthash/userguide.html#_a_hash_in_c
git 仓库
uthashhttps://github.com/troydhanson/uthash 同样包括文档,源码示例等,有兴趣可以细读
示例1:
217. 存在重复元素https://leetcode-cn.com/problems/contains-duplicate/这个就可以用来练手,查找一个数是否存在于hash map,没有就新增
struct num_map {
int val;
UT_hash_handle hh;
};
bool containsDuplicate(int* nums, int numsSize){
bool ret = false;
struct num_map* occur = NULL;
for(int i=0; i<numsSize; i++)
{
struct num_map* tmp = NULL;
HASH_FIND_INT(occur, &nums[i], tmp);
if (tmp == NULL) {
tmp = malloc(sizeof(struct num_map));
tmp->val = nums[i];
HASH_ADD_INT(occur, val, tmp);
} else {
ret = true;
break;
}
}
return ret;
}
示例2: