当前位置: 首页 > article >正文

《零基础Go语言算法实战》【题目 4-11】在不使用任何内置散列表库的情况下设计一个 HashSet

《零基础Go语言算法实战》

【题目 4-11】在不使用任何内置散列表库的情况下设计一个 HashSet

请实现一个 MyHashSet 类,该类的方法如下。

● void Add(key) :将键插入到 HashSet 中。

● bool Contains(key) :返回键是否存在于 HashSet 中。

● void Remove(key) :删除 HashSet 中的键。如果 key 在 HashSet 中不存在,则什么也

不做。

【解答】

① 思路。

按照要求,根据散列表思想,借助 Go 语言的切片和结构体实现 HashSet。

② Go 语言实现。

package main

import "fmt"

type HashSet struct {

 h []bool

}

func Constructor() HashSet {

 return HashSet{make([]bool, 1000001)}

}

func (hs *HashSet) Add(key int) {

 hs.h[key] = true

}

func (hs *HashSet) Remove(key int) {

 hs.h[key] = false

}

func (hs *HashSet) Contains(key int) bool {

 return hs.h[key]

}

func main() {

 obj := Constructor()

 obj.Add(6)

 obj.Remove(8)

 res := obj.Contains(6)

 fmt.Println(res)

}

//$ go run interview4-11.go


http://www.kler.cn/a/506519.html

相关文章:

  • FFmpeg硬件解码
  • 【网络云SRE运维开发】2025第3周-每日【2025/01/15】小测-【第14章ospf高级配置】理论和实操解析
  • 当父级元素设置了flex 布局 ,两个子元素都设置了flex :1, 但是当子元素放不下的时候会溢出父元素怎么解决 (css 样式问题)
  • 【AI】【RAG】使用WebUI部署RAG:数据优化与设置技巧详解
  • 使用Flink-JDBC将数据同步到Doris
  • Ubuntu把应用程序放到桌面
  • 蓝桥杯刷题第三天——排序
  • 如何有效防止和解决IP劫持问题
  • Linux中常用命令详解
  • STM32 FreeRTOS消息队列
  • 使用DAS的导出和导入功能迁移GaussDB数据
  • 【JAVA】-JDK
  • Windows Subsystem for Linux (WSL) 中安装 Redis
  • openharmony设备测试XTS测评用例开发指导
  • 学术内容写作ChatGPT提示词分享
  • 【Qt 常用控件】按钮类(QPushButton、QRadioButton、QCheckBox)
  • 基于 requests 依赖包的 Python 爬虫实战
  • Linux第一课:LinuxC基础 学习记录day11
  • Docker 镜像制作原理 做一个自己的docker镜像
  • 【安卓开发】【Android】总结:安卓技能树
  • 如何学习Transformer架构
  • 目标检测中的Bounding Box(边界框)介绍:定义以及不同表示方式
  • 【MySQL】高级查询技巧 JOIN、GROUP BY、ORDER BY、UNION 应用案列解析
  • Java全栈项目-办公自动化OA系统
  • 计算机网络 (41)文件传送协议
  • 【Linux探索学习】第二十六弹——进程通信:深入理解Linux中的进程通信