很久没更新了,这段时间比较忙
今天写的内容,大概是数据结构,动态规划,数学问题,计算几何,图论,搜索算法,以及一些乱七八糟的东西
这些都不讲
今天只写一个东西——就是hash
所谓hash 这是一个万能的存储方式,任何东西都可以用hash存储。
比如字符串。
我们将字符串看成一个K( K ≥ |α| )进制的大整数,再将这个大数对某个数取模作为它的hash值,这个模数取多少都可以(不要太小且越大越好),可以是你自己的生日,也可以是大家见了很多次的数字——1000000007。
在比较两个字符串是否相同时,我们只需要比较它们的hash值是否相同,牺牲O(n)的预处理时间,做到每次O(1)的比较时间。
有人会问了,比如我们取1000000007,那么1和1000000008的hash值岂不是一样?
其实啊,它们的hash值确实一样
我们可以用多个hash来避免冲突,比如我们加一个2,那么在1和1000000008的第一个hash值相等时,我们就比较第二个hash值。
甚至第三个,第四个。。。
接下来介绍一下hash killer系列题目(题解均由成都石室中学wuvin大佬的ppt提供)
hash killer 1: