一份完整的方案要包含什么
第 1 步:一份方案要走五步 第 2 步:需求:哪种操作最多 第 3 步:选型:写下理由 第 4 步:实现:边写边验 第 5 步:测量:拿出对比数据 第 6 步:优化:结果不能变 需 选 写 测 优 交付一份数据结构方案,至少要包含【0】。
交付时最该写清楚的事
把方案交给别人时,最该写清楚的是【0】。
这批词去重之后剩几个
运行下面这段程序: #include <algorithm> #include <iostream> #include <map> #include <string> #include <
第一步:写下选型
最终作品第一步:补全 choose,按需求给出该用哪种做法(表外的返回「还得再想想」)。需求是「判重还要保序」。 (本题用 g++ -std=c++17 -O0 编译。)
第二步:按选型实现
照着上一步的选型写出来:集合判重、数组保序。把去重后的三个词拼起来输出(用 / 隔开)。 (本题用 g++ -std=c++17 -O0 编译。)
第三步:出一份对比数据
补全 report:格式是「数组版次数/集合版次数/倍数」。算 200 条的情况——没有这三个数,「我的方案更好」就只是一句口号。 (本题用 g++ -std=c++17 -O0 编译。)
第四步:优化后行为不能变
补全 dedup(快版),再和 slow_dedup(慢版)各跑一遍,比较结果是否完全相同。相同输出 结果一致,否则输出 结果不一致。 (本题用 g++ -std=c++17 -O0 编译。)
交付:选型实现测量优化
这是这条路线、也是整个数据结构领域的最终作品。选型表、慢版、benchmark 计数都已经写好,补全三个关键函数(dedup 快版、report、distinct),然后一次验完五条:choose 给出「集合加数组」且表外需求给出「还得再想
std::list 边遍历边删
在 std::list 里一边遍历一边 erase,正确的写法是【0】。
补写判重保序
场景:实验机上 ~/work/ds/dedup.cpp 读入一串单词,要去掉重复的并按第一次出现的顺序输出,可 add 还没写。 任务:补全 add:用 unordered_set 判重、vector 保序。make 编译(带内存检查),.