C语言的hashmap_c hashmap-程序员宅基地

技术标签: 基本数据结构与算法(C语言版本)  hashmap  

在算法练习当中,常常会遇到用 hashmap 来实现的思路,通过 key-value 方便快捷的查找,增加,删除特定数据。

在高级语言当中,c++或java都有一套 hashmap API可供使用,但是 C 语言却没有系统的

不过开源项目为我们提供了这套工具,利用这套工具,可以方便的将自定义数据结构 hash 话

官网文档:

uthashicon-default.png?t=M276https://troydhanson.github.io/uthash/userguide.html#_a_hash_in_c

git 仓库

uthashicon-default.png?t=M276https://github.com/troydhanson/uthash        同样包括文档,源码示例等,有兴趣可以细读

示例1:

217. 存在重复元素icon-default.png?t=M276https://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:

1207. 独一无二的出现次数

更多数据结构算法详解

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/mrbone9/article/details/123806226

智能推荐

java 泛型的基本定义和简单使用_java泛型类的定义和使用-程序员宅基地

文章浏览阅读821次。1. 泛型集合2.泛型深入复杂用法2.1 普通泛型2.2 < T > 的含义2.3 < ? > 的含义2.4 静态泛型常用的泛型含义:T - Type(类型)R - Result(结果)K - Key(键)V - Value(值)E - Element (元素)N - Number(数字)? - 不确定类型【泛型】提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。比_java泛型类的定义和使用

【学生网页设计作业源码】中华传统文化题材网页设计主题:HTML+CSS设计放飞青春梦想网页-程序员宅基地

文章浏览阅读962次,点赞19次,收藏26次。网站布局方面:计划采用目前主流的、能兼容各大主流浏览器、显示效果稳定的浮动网页布局结构。网站程序方面:计划采用最新的网页编程语言HTML5+CSS3+JS程序语言完成网站的功能设计。并确保网站代码兼容目前市面上所有的主流浏览器,已达到打开后就能即时看到网站的效果。网站素材方面:计划收集各大平台好看的图片素材,并精挑细选适合网页风格的图片,然后使用PS做出适合网页尺寸的图片。网站文件方面:网站系统文件种类包含:html网页结构文件、css网页样式文件、js网页特效文件、images网页图片文件;

from lxml import etree报没有etree_lxml库内没有etree-程序员宅基地

文章浏览阅读350次,点赞8次,收藏7次。以前用lxml导入etree正常使用,今天打开突然发现报红了。或者去官网下载新的lxml包。通过html包转一下就可以。_lxml库内没有etree

【每天一个 Linux 命令】网络相关命令(ifconfig、route、ping、traceroute、netstat、ss、telnet、rcp、scp)_linux和telnet相同的命令-程序员宅基地

文章浏览阅读6.2k次,点赞10次,收藏109次。文章目录ifconfig命令ifconfig命令使用示例route命令语法route命令使用示例ping命令语法ping命令使用示例traceroute命令语法traceroute命令使用示例netstat命令语法netstat命令使用示例ss命令语法ss命令使用示例telnet命令语法telnet命令使用示例rcp命令语法rcp命令使用示例scp命令语法scp命令使用示例ifconfig命令许多windows非常熟悉ipconfig命令行工具,它被用来获取网络接口配置信息并对此进行修改。Linux系统_linux和telnet相同的命令

[原创]嵌入CEF遇到的问题及解决方案_cef no file dialog runner available for this platf-程序员宅基地

文章浏览阅读344次。[原创]嵌入CEF遇到的问题及解决方案_cef no file dialog runner available for this platform

完美解决丨#在python中,如果引用的变量未定义,则会报告NameError: name ‘变量名‘ is not defined。_nameerror: name 'read_yaml' is not defined-程序员宅基地

文章浏览阅读1.3w次,点赞74次,收藏2次。「SQL面试题库」是由不吃西红柿发起,全员免费参与的SQL学习活动。我每天发布1道SQL面试真题,从简单到困难,涵盖所有SQL知识点,我敢保证只要做完这100道题,不仅能轻松搞定面试,代码能力和工作效率也会有明显提升。_nameerror: name 'read_yaml' is not defined

随便推点

超高频RFID R200系列远距离一体化读写器开发测试_ypd-r200 rfid-程序员宅基地

文章浏览阅读3.6k次,点赞2次,收藏33次。超高频UHF RFID R200系列远距离一体化读写器开发测试概述R200系列远距离一体化读写器为一体化设计的UHF 频段读写器,其具有多协议兼容、读取速率快、多标签识读、防水型外观设计等优点,可广泛的应用于各种RFID 系统中。 广泛应用于仓储管理、供应链管理、车辆管理、生产线管理、溯源管理、资产管理、人员管理、考勤管理、产品防伪管理等多种场合。UHF-R200 是一款超高频读写模块,体积小,功耗低,最大功率为28dbm,并且功率可调;主要用于..._ypd-r200 rfid

TypeError: ‘numpy.float64‘ object cannot be interpreted as an integer类型出错_numpy.float64' object cannot be interpreted as an -程序员宅基地

文章浏览阅读1.1k次,点赞4次,收藏4次。TypeError: ‘numpy.float64’ object cannot be interpreted as an integer出错代码: for i in range(overlap_ranges.shape[1]): for j in range(overlap_ranges.shape[2]): min_overlaps[:, i, j] = np.linspace(*overlap_ranges[:, i, j])输入:overlap__numpy.float64' object cannot be interpreted as an integer

.NetCore使用Redis,StackExchange.Redis队列,发布与订阅,分布式锁的简单使用-程序员宅基地

文章浏览阅读2k次。https://www.cnblogs.com/Fengge518/p/13556182.html环境:之前一直是使用serverStack.Redis的客服端,今天来使用一下Stack..._stackexchange-redis 订阅获取

图像/视频数据标注工具_rectlabel windows版本下载-程序员宅基地

文章浏览阅读2.2k次,点赞2次,收藏16次。十个最常用深度学习图像/视频数据标注工具原创: gloomyfish OpenCV学堂从此以后图像与视频数据标注不用为找工具发愁!好东西记得分享图像数据标注概述在深度学习领域,训练数据对训练结果有种至关重要的影响,在计算机视觉领域,除了公开的数据集之外,对很多应用场景都需要专门的数据集做迁移学习或者端到端的训练,这种情况需要大量的训练数据,取得这些数据方法有如下几种人工数据标注自动数..._rectlabel windows版本下载

Cmake Error: your compiler "cl" was not Found .etc-程序员宅基地

文章浏览阅读163次。又是环境变量路径等问题,烦死人了。TIPS:请注意,控制台的窗口也有自己的环境变量,从系统环境变量和用户环境变量继承过来的,一个窗口(控制台)可以添加属于自己的环境变量(跟别的控制台窗口没关系) 解决方案:从windows x64 win64 Command prompt中来对vcvarsall.bat文件来配置环境变量,然后也必须在windows x64 win64 Command ..._cmake时出现error:cl not found

React笔记_p://60.167.164.202:8081/stulogin.html-程序员宅基地

文章浏览阅读247次。React以及生态圈React生态圈中技术:ReactJS ReactNative ReactVR(React360)Redux…ReactRouter ReactNavigation AntDesign 。。。概述:slogan:learn once,write anywhere(只需要学习一次react中的核心概念,就可以使用reactjs写网页,使用reactnative写nativeapp,使用react360来实现虚拟现实的app)1、reactjs(才用react实现网页编程)1_p://60.167.164.202:8081/stulogin.html

推荐文章

热门文章

相关标签