1. 程式人生 > 實用技巧 >筆記:散列表/雜湊表

筆記:散列表/雜湊表

地址計算

直接定址

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. 字串中的第一個唯一字元
    給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -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)
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。