zoukankan      html  css  js  c++  java
  • 哈希表

    把一些元素node,通过对其特征的分析,设计哈希函数将其转译成数组下标(或地址)。

    key=hash1(node) (node较复杂,则先转为key),a[hash2(key)].

    在竞赛中最直接的用处便是判重和判等价

    1,对大质数取模(最简单的hash函数)

      a[key%1000000009]

    2,解决冲突(建议vector)

      即hash值一样,再从hash值一样的元素里寻找需要的

    3,BKDRhash

    对字符串的hash,将字符串看成一个seed进制数(seed取质数好)

    通过这个hash,可以O(n)处理两个串的匹配(长串是否含有短串)

    首先O(M)得出短串的hash值,再对长串先得到hash[1,,,,m],而hash[2,,,,m+1]=(hash[1,,,,,m]-s[1]*seedm-1)*seed+s[m+1]

    只需O(1)的计算便可得出下一待匹配的子串的hash值,hash值都不一样,则两串肯定不一样

    还有一个优点,我们再对十进制数进行研究,发现先处理好前缀的hash值,则任意子串的hash值都能O(1)计算出。

  • 相关阅读:
    Nexus3.0私服搭建
    JavaScript
    Spring基础
    Hibernate注解
    HTML5
    Apache Tomcat
    Java安装(Ubuntu)
    C++ 日期 & 时间
    C++ 引用
    C++ 指针
  • 原文地址:https://www.cnblogs.com/lnu161403214/p/8858236.html
Copyright © 2011-2022 走看看