當需要進行查詢速度優化時,就可以使用雜湊表,需要使用額外的空間儲存資料,隨後可以提高查詢效率。
常用的雜湊表資料結構有三種:陣列、集合(set)、對映(map)。
當資料量小時陣列也可以有雜湊功能:
例如統計字串中字母出現次數,可以使用 s[0]~s[25] 的陣列分別儲存字母數量。
單當資料量無法確定或較大時,就需要使用集合(set)了。
集合有三類:
首先考慮使用unordered_set,它具有資料唯一性,無序的特點。
當要求有序時,就可以使用set。它具有資料唯一性,有序的特點。
當要求有序且可重複時,就可以使用multiset,它具有可重複性,有序的特點。
當資料有 key 和 value 對應關係時,就可以使用對映(map)。
對映同樣有三種:
首先是unordered_map,它具有 key 唯一性,無序的特點。
而map,具有 key 唯一性,有序的特點。
multimap,則是具有 key 可重複性,有序的特點。
2021 1 24 刷題(三數之和 雜湊表)
題目描述 給定乙個整數陣列 nums 和乙個整數目標值 target,請你在該陣列中找出 和為目標值 的那 兩個 整數,並返回它們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。你可以按任意順序返回答案。示例 1 輸入 nums 2,7,11,15 target ...
常見的三種雜湊結構
查詢乙個元素是否出現在集合中的快速方法,雜湊表 一般會使用如下三種資料結構 c 中對於set提供了三種資料結構 集合底層實現 是否有序 數值是否可以重複 是否能更改數值 查詢效率 增刪效率 std set 紅黑樹有序否否 o logn o logn std multiset 紅黑樹有序是否 o lo...
三種順序容器的比較
insert 按位置插入 o n erase 按位置刪 o n 優點 尾部操作和隨機訪問速度快 缺點 不支援頭插 任意位置刪除和插入複雜度較高 擴容方式 1.倍數開闢二倍的記憶體 2.舊的資料拷貝到新記憶體 3.釋放舊的記憶體 4.指向新的記憶體 push front 頭插 o 1 push bac...