zoukankan      html  css  js  c++  java
  • 领扣(LeetCode)设计哈希映射 个人题解

    不使用任何内建的哈希表库设计一个哈希映射

    具体地说,你的设计应该包含以下的功能

    • put(key, value):向哈希映射中插入(键,值)的数值对。如果键对应的值已经存在,更新这个值。
    • get(key):返回给定的键所对应的值,如果映射中不包含这个键,返回-1。
    • remove(key):如果映射中存在这个键,删除这个数值对。


    示例:

    MyHashMap hashMap = new MyHashMap();
    hashMap.put(1, 1);          
    hashMap.put(2, 2);         
    hashMap.get(1);            // 返回 1
    hashMap.get(3);            // 返回 -1 (未找到)
    hashMap.put(2, 1);         // 更新已有的值
    hashMap.get(2);            // 返回 1 
    hashMap.remove(2);         // 删除键为2的数据
    hashMap.get(2);            // 返回 -1 (未找到) 
    


    注意:

      • 所有的值都在 [1, 1000000]的范围内。
      • 操作的总数目在[1, 10000]范围内。
      • 不要使用内建的哈希库。

    这题比较简单。应用数组就能形成哈希映射,算法的复杂度是O(n)。但是遇到一个问题需要记录下。

    在初始化数组中,我按照以前写C的想法使用以下方法初始化,得到错值

     public MyHashMap() {
            for (int i : hashmap) {
                i=-1;
            }
        }

    使用以下方法初始化,结果正确。

    public MyHashMap() {
            Arrays.fill(hashmap, -1);
        }

    两个是同样的功能,但是不知道是什么原因导致了错误。等回头看来解决这个疑惑,或者有大神能解答最好!

    代码如下:

     1 class MyHashMap {
     2 
     3     int[] hashmap=new int[100001];
     4     
     5     /** Initialize your data structure here. */
     6     public MyHashMap() {
     7         Arrays.fill(hashmap, -1);
     8     }
     9     
    10     /** value will always be positive. */
    11     public void put(int key, int value) {
    12         hashmap[key]=value;
    13     }
    14     
    15     /** Returns the value to which the specified key is mapped, or -1 if this map contains no mapping for the key */
    16     public int get(int key) {
    17         return hashmap[key];
    18     }
    19     
    20     /** Removes the mapping of the specified value key if this map contains a mapping for the key */
    21     public void remove(int key) {
    22         hashmap[key]=-1;
    23     }
    24 }
    25 
    26 
    27 /**
    28  * Your MyHashMap object will be instantiated and called as such:
    29  * MyHashMap obj = new MyHashMap();
    30  * obj.put(key,value);
    31  * int param_2 = obj.get(key);
    32  * obj.remove(key);
    33  */
  • 相关阅读:
    sql2slack alash3al 开源的又个轻量级工具
    pgspider fetchq 扩展docker镜像
    godns 集成coredns 的demo
    godns 简单dnsmasq 的dns 替换方案
    aviary.sh 一个基于bash的分布式配置管理工具
    使用coredns 的template plugin实现一个xip 服务
    nginx 代理 coredns dns 服务
    基于nginx proxy dns server
    几个不错的geodns server
    spring boot rest api 最好添加servlet.context-path
  • 原文地址:https://www.cnblogs.com/axiangcoding/p/9923116.html
Copyright © 2011-2022 走看看