筆記:散列表/雜湊表
阿新 • • 發佈:2020-12-23
地址計算
直接定址
Hash(key) = a*key +b;
不連續,關鍵字對映到儲存單元
Hash(key)= key+1 0->-1 3->2 5->4;
除留取餘 常用
Hash(key)=key%p;
選擇P,減少衝突,選取P需要取一個不大於散列表長度但接近長度的質數
數字分析
有一個關鍵字集合
平方取中
適用於關鍵字每位取值不均勻或小於雜湊地址所需要的位數。
摺疊法
5211252-->512+125+2=648
衝突處理
開放地址
Hi=(H(key)+di)%m,i=0,1,2...,k(k<=m-1); d增量
增量序列
線性探測
平方檢測
- 字串中的第一個唯一字元
給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。
class Solution { public: int firstUniqChar(string s) { unordered_map<int, int> frequency; for (char ch: s) { ++frequency[ch]; } for (int i = 0; i < s.size(); ++i) { if (frequency[s[i]] == 1) { return i; } } return -1; } }; 作者:LeetCode-Solution 連結:https://leetcode-cn.com/problems/first-unique-character-in-a-string/solution/zi-fu-chuan-zhong-de-di-yi-ge-wei-yi-zi-x9rok/ 來源:力扣(LeetCode) 著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。