LeetCode No 1兩數之和

2021-10-23 15:49:20 字數 619 閱讀 7944

vector<

int>

twosum

(vector<

int>

& nums,

int target);}

//map[nums[i]] = i;

map.

emplace

(nums[i]

, i);}

return

;}

拓展:hash table

1、why hashtable?

查詢時,關鍵字的比較運算是主要的效能消耗,為了避免比較,通過key-value建立對映,實現快速查詢,這就是hashtable。

2、how?

通過hash()函式計算key值,實現對映,並儲存在一段連續的空間中。

3、衝突解決

開放定址法:線性探測再雜湊(1,2,3…)、二次探測再雜湊(1^2, -1^2)、偽隨機探測再雜湊

鏈位址法:衝突時,在對應key的鍊錶中頭部插入新節點

公共溢位區法:所有衝突元素放在一塊公共區域儲存。

4、時間複雜度

最好o(1),最差為o(n)(所有元素衝突,則需要查詢所有鍊錶節點)

具體參考:我的筆記-hash表

LeetCode No 1 兩數之和

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9...

LeetCode No 1 兩數之和

題解一 很簡單,直接暴力解法,兩層for迴圈,不多說 題解二 官方解法 因為是找兩數之和為target,且只會有乙個解 要在o n平方 上優化,顯然想到迴圈一次就得找到解 又恰好是兩數,則可以利用hashmap的key和value,把陣列值作為鍵,陣列鍵作為value 邊迴圈邊判斷key中是否存在t...

1 兩數之和

給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數。你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所以返回 0,1 解class solution hash nums i...