《零基础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