一万条也不能退化
同一个 distinct,这次喂 10000 条(其中只有 1000 个不同的值)。 ⚠️ 用集合写的话瞬间就出来;写成 x in 列表 的话,这道题会跑很久。
三条边界一起验
把三条边界一次验完:空输入得 0、五个相同的得 1、一万条(1000 个不同值)得 1000。 三条全过输出 边界通过,否则输出 有失败。
一份完整的方案要包含什么
交付一份数据结构方案,至少要包含【0】。
交付时最该写清楚的一件事
把方案交给别人时,最该写清楚的是【0】。
这批词去重之后剩几个
运行下面这段程序: print(len(set(["苹果", "香蕉", "苹果", "梨", "香蕉", "苹果"])
第一步:写下选型
最终作品第一步:补全 choose,按需求给出该用哪种做法(表外的返回 还得再想想)。 需求是「判重还要保序」。
第二步:按选型实现
照着上一步的选型写出来:集合判重、列表保序。 把去重后的三个词拼起来输出(用 / 隔开)。
第三步:出一份对比数据
补全 report:格式是列表版次数/集合版次数/倍数。 算 200 条的情况——没有这三个数,"我的方案更好"就只是一句口号。
第四步:优化之后行为不能变
慢版(列表判重)和快版(集合判重)各跑一遍,比较结果是否完全相同。 相同输出 结果一致,否则输出 结果不一致。
交付:选型 + 实现 + Benchmark + 优化
这是这条路线、也是整个数据结构领域的最终作品。把选型、实现、对比数据、边界处理全写出来,然后一次验完五条: choose("判重还要保序") 给出「集合加列表」,表外的需求给出「还得再想想」 去重结果按首次出现是 苹果、