mirror of
https://github.com/halfrost/LeetCode-Go.git
synced 2025-07-05 00:25:22 +08:00
规范格式
This commit is contained in:
92
leetcode/0706.Design-HashMap/706. Design HashMap.go
Normal file
92
leetcode/0706.Design-HashMap/706. Design HashMap.go
Normal file
@ -0,0 +1,92 @@
|
||||
package leetcode
|
||||
|
||||
const Len int = 100000
|
||||
|
||||
type MyHashMap struct {
|
||||
content [Len]*HashNode
|
||||
}
|
||||
|
||||
type HashNode struct {
|
||||
key int
|
||||
val int
|
||||
next *HashNode
|
||||
}
|
||||
|
||||
func (N *HashNode) Put(key int, value int) {
|
||||
if N.key == key {
|
||||
N.val = value
|
||||
return
|
||||
}
|
||||
if N.next == nil {
|
||||
N.next = &HashNode{key, value, nil}
|
||||
return
|
||||
}
|
||||
N.next.Put(key, value)
|
||||
}
|
||||
|
||||
func (N *HashNode) Get(key int) int {
|
||||
if N.key == key {
|
||||
return N.val
|
||||
}
|
||||
if N.next == nil {
|
||||
return -1
|
||||
}
|
||||
return N.next.Get(key)
|
||||
}
|
||||
|
||||
func (N *HashNode) Remove(key int) *HashNode {
|
||||
if N.key == key {
|
||||
p := N.next
|
||||
N.next = nil
|
||||
return p
|
||||
}
|
||||
if N.next != nil {
|
||||
return N.next.Remove(key)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
/** Initialize your data structure here. */
|
||||
func Constructor706() MyHashMap {
|
||||
return MyHashMap{}
|
||||
}
|
||||
|
||||
/** value will always be non-negative. */
|
||||
func (this *MyHashMap) Put(key int, value int) {
|
||||
node := this.content[this.Hash(key)]
|
||||
if node == nil {
|
||||
this.content[this.Hash(key)] = &HashNode{key: key, val: value, next: nil}
|
||||
return
|
||||
}
|
||||
node.Put(key, value)
|
||||
}
|
||||
|
||||
/** Returns the value to which the specified key is mapped, or -1 if this map contains no mapping for the key */
|
||||
func (this *MyHashMap) Get(key int) int {
|
||||
HashNode := this.content[this.Hash(key)]
|
||||
if HashNode == nil {
|
||||
return -1
|
||||
}
|
||||
return HashNode.Get(key)
|
||||
}
|
||||
|
||||
/** Removes the mapping of the specified value key if this map contains a mapping for the key */
|
||||
func (this *MyHashMap) Remove(key int) {
|
||||
HashNode := this.content[this.Hash(key)]
|
||||
if HashNode == nil {
|
||||
return
|
||||
}
|
||||
this.content[this.Hash(key)] = HashNode.Remove(key)
|
||||
}
|
||||
|
||||
func (this *MyHashMap) Hash(value int) int {
|
||||
return value % Len
|
||||
}
|
||||
|
||||
/**
|
||||
* Your MyHashMap object will be instantiated and called as such:
|
||||
* obj := Constructor();
|
||||
* obj.Put(key,value);
|
||||
* param_2 := obj.Get(key);
|
||||
* obj.Remove(key);
|
||||
*/
|
Reference in New Issue
Block a user