优化前后结果必须一致
优化最容易犯的错是把行为也改了。补全 fast_dedup,再把慢版和快版各跑一遍,结果完全相同输出 结果一致,否则输出 结果不一致。 (本题用 g++ -std=c++17 -O0 编译。)
这次优化到底提了多少
补全 speedup_of:返回 200 条数据时,数组判重的比较次数是集合的多少倍(整除)。这个数就是这次优化的收益——有数才叫优化,没数只是改写。 (本题用 g++ -std=c++17 -O0 编译。)
大数据下最怕什么(C++)
数据量上来之后,最怕代码里【0】。
哈希表什么时候会退化
第 1 步:五个一模一样的数 第 2 步:第一个没见过:留下 第 3 步:后面四个都见过:跳过 第 4 步:去重以后只剩一个 7 7 7 7 7 哈希表也不是永远 O(1),它在【0】的时候会退化。
小数据上两种做法差多少
只有 10 条数据时,两种判重的比较次数。运行下面这段程序: #include <algorithm> #include <iostream> #include <map> #include <st
数据量上来之后呢
换成 200 条。运行下面这段程序: #include <algorithm> #include <iostream> #include <map> #include <string> #in
空输入不能崩
补全 distinct:返回不重复元素的个数。这次喂给它一个空的 vector,不能出错。 (本题用 g++ -std=c++17 -O0 编译。)
全都一样的输入
同一个 distinct,这次喂五个一模一样的词。 (本题用 g++ -std=c++17 -O0 编译。)
一万条也不能退化
同一个 distinct,这次喂 10000 条(其中只有 1000 个不同的值)。⚠️ 用集合写的话瞬间就出来;写成在 vector 里 find 的话,数据再大就会跑很久。 (本题用 g++ -std=c++17 -O0 编译。)
三条边界一起验
补全 distinct,然后把三条边界一次验完:空输入得 0、五个相同的得 1、一万条(1000 个不同值)得 1000。三条全过输出 边界通过,否则输出 有失败。 (本题用 g++ -std=c++17 -O0 编译。)