leetcode 705 設計雜湊集合

2021-10-22 00:04:33 字數 1535 閱讀 9970

不使用任何內建的雜湊表庫設計乙個雜湊集合(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 - 10^6的整型,那要實現hash直接線性對映就行了

這麼寫空間消耗屬實有點醜陋

class

myhashset

void

add(

int key)

void

remove

(int key)

bool

contains

(int key)

};

用煉表處理雜湊衝突,取乙個質數上界,將所有資料都歸納到這個範圍內。

無非是乙個空間和時間的權衡,hash函式設計得越離散就越快,相應的空間開銷也大

class

myhashset

intgetindex

(int key)

void

add(

int key)

ele[index]

.push_back

(key)

;return;}

void

remove

(int key)

}return;}

bool

contains

(int key)

return

false;}

};

LeetCode 705 設計雜湊集合

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

Leetcode 705 設計雜湊集合 C

不使用任何內建的雜湊表庫設計乙個雜湊集合 具體地說,你的設計應該包含以下的功能 myhashset hashset new myhashset hashset.add 1 hashset.add 2 hashset.contains 1 返回 true hashset.contains 3 返回 f...

每日一題 Leetcode705 設計雜湊集合

今天的每日一題是leetcode705.設計雜湊集合,題意如下 不使用任何內建的雜湊表庫設計乙個雜湊集合 hashset 實現 myhashset 類 void add key 向雜湊集合中插入值 key bool contains key 返回雜湊集合中是否存在這個值 key void remov...