写 add 把两位都置上
补全 bloom_add:把 k 的两个哈希位都置成 1。加完 17、24、15 之后,输出一共有几位被置上了。 (本题用 g++ -std=c++17 -O0 编译。)
写 check 两位都是 1
补全 bloom_check:两个哈希位都是 1 才返回 可能在,否则返回 肯定不在。查 15(它确实加过),输出结果。 (本题用 g++ -std=c++17 -O0 编译。)
亲眼看见一次误判
同一个 bloom_check。这次查 13——它从来没被加过。但 13 的两个哈希位(5 和 7)正好被 15 置上了,于是过滤器会说它「可能在」。这就是误判。 (本题用 g++ -std=c++17 -O0 编译。)
要反复查区间和还会改
第 1 步:四种需求,各选一种结构 第 2 步:第 1 条需求的答案 第 3 步:第 2 条需求的答案 第 4 步:第 3 条需求的答案 第 5 步:第 4 条需求的答案 第 6 步:先看需求,再挑结构 区间和会改 海量可误判 磁盘少读盘
要挡住海量重复请求
爬虫要判断「这个网址抓过没有」,几十亿条,允许极小误判,选【0】。
按需求挑一个
运行下面这段程序: #include <algorithm> #include <iostream> #include <map> #include <string> #include <
磁盘上的索引选什么
同一张对照表。 运行下面这段程序: #include <algorithm> #include <iostream> #include <map> #include <string> #inc
写一个选型函数
补全 choose:按需求返回该用哪种结构。四条对应关系:区间和还会改 → 树状数组;海量去重可误判 → 布隆过滤器;磁盘上少读盘 → B+树;有序且增删频繁 → 平衡树;表里没有的返回 还得再想想。这次问的是「区间和还会改」。 (本题用
需求变了选型也变
同一个 choose,这次问的是「有序且增删频繁」。 (本题用 g++ -std=c++17 -O0 编译。)
没见过的需求别崩
同一个 choose:需求不在表里就返回 还得再想想,不能出错。这次问一个表里没有的需求,输出结果。 (本题用 g++ -std=c++17 -O0 编译。)