1.什么是哈希表?
哈希表是一种散列表。通常是将一堆数,这堆数的数值所在区间比较大,而数量却很小。这时,将这堆数使用特定的方法映射到一个较小的区间中,这个值便是前者的哈希值。前者是键,后者为值,这两个便是一个键值对。
举个例子:比如 1 12 23 34 45
这几个数,只有五个数,但是数据范围在1 ~ 45
之间。如果将这5个数映射到1 ~ 5
之间呢?可以将所有数都 %10
,就得到了1 2 3 4 5
。那么将他们映射到一个小的区间有什么用呢?
2.哈希表有什么用?
这里我先出一道题,便于理解哈希表的作用。
``给定n( n <= 1e6) 个数,这些数所在范围是
0~1e9。再进行 m ( m <= 1e6)次询问,每次询问给出一个数num, 问你num是否存在于这n个数中,是的话输出yes,否则输出胡false?
要求:第一行输入两个值n, m, 第二行输入n个数据,第三行输入m个值num,每输入一个num,输出一个yes或false表示这个值存在与否。
样例:
输入:
5 2 1 10 100 1000 10000 100000 10 yes 20 false
首先说一下暴力做法:
#include <iostrea