码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode 705 设计哈希映射

时间:2019-05-12 20:02:25      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:哈希   实现   while   删除   a算法   通过   nod   bsp   style   

一  题目概述

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

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

  • add(value):向哈希集合中插入一个值。
  • contains(value) :返回哈希集合中是否存在这个值。
  • remove(value):将给定值从哈希集合中删除。如果哈希集合中没有这个值,什么也不做。

二 java算法实现

class MyHashSet {
    private Node[]arr=new Node[1024];    //2的指数,计算hash时可以用 &
    private class Node{
        public Node next;
        public int val;
    }

    /** Initialize your data structure here. */
    public MyHashSet() {
    
    }
    
    public void add(int key) {       //尾插法
        Node node=new Node();
        int hash=key&1023;
        node.val=key;
        if(contains(key))
            return;
        if(arr[hash]==null){
            arr[hash]=node;
        }else{
            Node n=arr[hash];
            while(n.next!=null){
                n=n.next;
            }
            n.next=node;
        }
    }
    
    public void remove(int key) {
        int hash=key&1023;
        if(!contains(key))
            return ;
        else{
             Node n=arr[hash];
             Node n1=n.next;
             if(n.val==key){
                 arr[hash]=n.next;
                 return ;
             } else{
                 while(n1!=null){
                     if(n1.val==key){
                         n.next=n1.next;
                         return ;
                     }
                     n=n.next;
                     n1=n1.next;
                }
             }
         }   
        
    }
    
    /** Returns true if this set contains the specified element */
    public boolean contains(int key) {
        int hash=key&1023;
        if(arr[hash]==null)
            return false;
        else{
            Node n=arr[hash];
            while(n!=null){
                if(n.val==key)
                    return true;
                n=n.next;
            }
        }
        return false;
    }
}

 通过此题 可以很好的理解hashmap的设计,核心上是个链表的数组,也就是常说的桶的结构

leetcode 705 设计哈希映射

标签:哈希   实现   while   删除   a算法   通过   nod   bsp   style   

原文地址:https://www.cnblogs.com/caijiwdq/p/10853269.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!