705 設計雜湊集合

2021-10-22 03:18:29 字數 1528 閱讀 8667

不使用任何內建的雜湊表庫設計乙個雜湊集合(hashset)。

實現 myhashset 類:

void add(key) 向雜湊集合中插入值 key 。

bool contains(key) 返回雜湊集合中是否存在這個值 key 。

void remove(key) 將給定值 key 從雜湊集合中刪除。如果雜湊集合中沒有這個值,什麼也不做。

示例

輸入:

["myhashset", "add", "add", "contains", "contains", "add", "contains", "remove", "contains"]

[, [1], [2], [1], [3], [2], [2], [2], [2]]

輸出:[null, null, null, true, false, null, true, null, false]

解釋:myhashset myhashset = new myhashset();

myhashset.add(1); // set = [1]

myhashset.add(2); // set = [1, 2]

myhashset.contains(1); // 返回 true

myhashset.contains(3); // 返回 false ,(未找到)

myhashset.add(2); // set = [1, 2]

myhashset.contains(2); // 返回 true

myhashset.remove(2); // set = [1]

myhashset.contains(2); // 返回 false ,(已移除)

提示

0 <= key <= 106

最多呼叫 104 次 add、remove 和 contains 。

雜湊集合:雜湊函式+衝突處理+擴容機制

擴容機制:當元素過多時,衝突容易發生,需要開闢更大空間來減少衝突

本題目採用鏈位址法。開闢乙個陣列,陣列中的每乙個元素都是乙個鍊錶

先通過雜湊函式的到key對應的位址,遍歷對應位置的鍊錶

參考**

class

myhashset

}public

void

add(

int key)

data[h]

.offerlast

(key);}

public

void

remove

(int key)}}

/** returns true if this set contains the specified element */

public

boolean

contains

(int key)

return

false;}

private

static

inthash

(int key)

}

LeetCode 705 設計雜湊集合

問題描述 不使用任何內建的雜湊表庫設計乙個雜湊集合 具體地說,你的設計應該包含以下的功能 add value 向雜湊集合中插入乙個值。contains value 返回雜湊集合中是否存在這個值。remove value 將給定值從雜湊集合中刪除。如果雜湊集合中沒有這個值,什麼也不做。示例 myhas...

leetcode 705 設計雜湊集合

不使用任何內建的雜湊表庫設計乙個雜湊集合 hashset 實現 myhashset 類 void add key 向雜湊集合中插入值 key bool contains key 返回雜湊集合中是否存在這個值 key void remove key 將給定值 key 從雜湊集合中刪除。如果雜湊集合中沒...

LC 705 設計雜湊集合

不使用任何內建的雜湊表庫設計乙個雜湊集合 hashset 實現 myhashset 類 void add key 向雜湊集合中插入值 key bool contains key 返回雜湊集合中是否存在這個值 key void remove key 將給定值 key 從雜湊集合中刪除。如果雜湊集合中沒...