有两天没写博客了,前两天刷完了PAT甲级中的散列的题目,做一个小小的总结。
散列的定义:
将元素通过一个函数转化成一个整数,使得该整数能够尽量唯一地代表这个元素。
最常用的散列:
对于数字而言,H(key) = key,最常见的用法是某个数字直接作为对于数组的下标。
比如标记某个数字num(0 <= num <= 10000)是否出现过,可以直接映射到bool数组vis[10005]的vis[num]上。
除此之外还有线性变换【H(key) = a * key + b】、除留余数法【H(key) = key % size】等等。
字符串hash初步:
可以将字符串看作数字进制。
比如假设字符串中只有26个大写字母,则可以将字符串看作是26进制,通过将26进制转化成十进制的值,得出hash值。
使用map实现hash映射:
可以使用STL库中的map直接实现hash映射。
比如map<string, int> idx就可以实现字符串类型到int整型的hash映射。
idx["hello world"] = 1,就是在将字符串"hello world"映射到了1上。
学习不息,继续加油