leetcode題 706 設計雜湊對映(簡單)

2021-09-26 02:04:31 字數 1409 閱讀 3028

一、題目描述:706. 設計雜湊對映(簡單)

不使用任何內建的雜湊表庫設計乙個雜湊對映

具體地說,你的設計應該包含以下的功能

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]範圍內。

不要使用內建的雜湊庫。

二、解題思路

1、hash演算法是取模,通過vector作為陣列,解決衝突使用鍊錶法。陣列的初始長度max_key的值對效能影響比較大,陣列過長,構造vector花的時間會比較長,陣列過短會導致list長度較長,遍歷時間趨向線性。

三、**

class myhashmap 

vector>> * _array;

int max_key;

/** value will always be non-negative. */

void put(int key, int value)

}if(it == _list.end())

}int get(int key)

}return -1;

}void remove(int key) }}

~myhashmap()

};/**

* your myhashmap object will be instantiated and called as such:

* myhashmap* obj = new myhashmap();

* obj->put(key,value);

* int param_2 = obj->get(key);

* obj->remove(key);

*/

leetcode 706 設計雜湊對映

不使用任何內建的雜湊表庫設計乙個雜湊對映 具體地說,你的設計應該包含以下的功能 put key,value 向雜湊對映中插入 鍵,值 的數值對。如果鍵對應的值已經存在,更新這個值。get key 返回給定的鍵所對應的值,如果對映中不包含這個鍵,返回 1。remove key 如果對映中存在這個鍵,刪...

LeetCode 706 設計雜湊對映

不使用任何內建的雜湊表庫設計乙個雜湊對映 具體地說,你的設計應該包含以下的功能 put key,value 向雜湊對映中插入 鍵,值 的數值對。如果鍵對應的值已經存在,更新這個值。get key 返回給定的鍵所對應的值,如果對映中不包含這個鍵,返回 1。remove key 如果對映中存在這個鍵,刪...

leetcode 706 設計雜湊對映

706.設計雜湊對映 不使用任何內建的雜湊表庫設計乙個雜湊對映 具體地說,你的設計應該包含以下的功能 put key,value 向雜湊對映中插入 鍵,值 的數值對。如果鍵對應的值已經存在,更新這個值。get key 返回給定的鍵所對應的值,如果對映中不包含這個鍵,返回 1。remove key 如...