705.设计哈希集合

xiaoxiao2025-11-29  7

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

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

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

注意:

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

思路一: 该方法较为简单,但性能较差,根据题意创建百万级的数组,用于一一映射要插入的数值,尽管题目的值是从1开始,但是实际测试用例却包含了0,所以需要将数组赋值为-1,不然判断是否contains(0)时,就会报错!

class MyHashSet { private int[] arr; /** Initialize your data structure here. */ public MyHashSet() { arr = new int[1000000]; for(int i = 0; i < arr.length; i++){ arr[i] = -1; } } public void add(int key) { arr[key] = key; } public void remove(int key) { if (arr[key] != key) { return; }else { arr[key] = -1; } } /** Returns true if this set did not already contain the specified element */ public boolean contains(int key) { if (arr[key] == key) { return true; } return false; } }

**思路二:**使用List和LinkedList实现一个散列表

转载请注明原文地址: https://www.6miu.com/read-5040186.html

最新回复(0)