开头的话
这个算法,并不像大部分其它的算法那样,逻辑正确后,时间复杂度一般都是较稳定的,哪怕是最高和最低之间也没差多少
但哈希不一样,它时间复杂度较不稳定,虽然可以通过特殊方式尽量优化,但还是要慎用。
怎么回事呢?
在时间不够,空间不够开桶,还要判重时,哈希有了一个用武之地,虽然判重可能有别的方法,但我还不知道啊。
(如果以后的童浏舟知道,请在这留下痕迹并告诉我,2022/5/30的童浏舟,谢谢)
而哈希,便成了一道利器,它有着接近
的时间复杂度,但也有着一点点的危险以至于卡成
普通哈希
赋予一个数n以特殊的值,(请保证在数组范围!),并对所有数都进行同样操作,查看哈希表中第格,并作出操作如下:
-
当这个格为空,将n存入,退出
-
当这个格有数了,判断如果它和n相等,那么返回已经有过n这个数了并退出,否则操作下一个格
-
嗯,如果你找的这个格超出了数组范围,回到开始,0格!
这就是啦!
但请注意:如果你没有特殊判断,注意当你回到开始时,是第0格,这点请注意,你死过很多次了
字符串哈希
和上面操作基本一样,但请注意,你在判断字符串是否相等时,请注意你的字符串从字符数组第几格开始。。。你同样死过多次了
优化
对于所有
你的key值可以乘上一个大质数,这样不易被卡
对于字符串哈希
你的值最好和你字符串中字符的位置有关,不然会浪费过多时间
总结
这个算法较有用,判重可以作为优化其他算法的一部分,应多练习和注意漏洞
标签:25,判重,2022,复杂度,算法,4th,哈希,字符串 From: https://www.cnblogs.com/tlz-place/p/16723937.html