LeetCode 706 Design HashMap 解题报告

题目要求

Design a HashMap without using any built-in hash table libraries.

To be specific, your design should include these functions:

  • put(key, value) : Insert a (key, value) pair into the HashMap. If the value already exists in the HashMap, update the value.
  • get(key): Returns the value to which the specified key is mapped, or -1 if this map contains no mapping for the key.
  • remove(key) : Remove the mapping for the value key if this map contains the mapping for the key.

题目分析及思路

要求不使用任何内置的hash table库设计一个HashMap。具体要求是:1)put函数能将一对(key, value)插入到HashMap,若已经有value,则进行更新;2)get函数能获得对应key的value,若不存在key,则返回-1;3)remove函数能在key存在的时候去除key以及key对应的value。可以将key和value分别设置为列表,put函数里对key的存在性先进行判断,然后确定添加还是更新。get和remove函数同样需要对key的存在性先进行判断,然后前者获取对应key的索引,后者将key和与key同位置的value一起去掉。

python代码 

class MyHashMap:

    def __init__(self):

        """

        Initialize your data structure here.

        """

        self.keys = []

        self.vals = []

        

    def put(self, key: int, value: int) -> None:

        """

        value will always be non-negative.

        """

        if key not in self.keys:

            self.keys.append(key)

            self.vals.append(value)

        else:

            self.vals[self.keys.index(key)] = value

        

    def get(self, key: int) -> int:

        """

        Returns the value to which the specified key is mapped, or -1 if this map contains no mapping for the key

        """

        if key in self.keys:

            return self.vals[self.keys.index(key)]

        else:

            return -1

        

    def remove(self, key: int) -> None:

        """

        Removes the mapping of the specified value key if this map contains a mapping for the key

        """

        if key in self.keys:

            idx = self.keys.index(key)

            self.keys.remove(key)

            self.vals.pop(idx)

        

# Your MyHashMap object will be instantiated and called as such:

# obj = MyHashMap()

# obj.put(key,value)

# param_2 = obj.get(key)

# obj.remove(key)

 

转载于:https://www.cnblogs.com/yao1996/p/10576416.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值