做一个自动补全

补全 suggest:返回所有以 pre 开头的词,按字典序排好。 补全 app,把结果用 / 拼起来输出。

开始练习 →

前缀有和没有,一次验两种

同一个 suggest。把两个结果的个数拼起来输出:补全 app(有三个)和补全 cat(一个都没有),中间用 / 隔开。 ⚠️ 光会返回空列表是不够的,有结果的那一半也得对。

开始练习 →

⚠️ 词库大了之后差多少

Trie 查前缀的步数只和前缀长度有关;扫全表的步数和词库大小有关。 补全两个函数,算一个一百万词的词库上查 app 各要几步,用 / 拼起来输出。

开始练习 →

选搜索算法先看什么

给一个查找需求选算法,先要问清楚的是【0】。

开始练习 →

无序数组只查一次

一个没排序的数组,只需要查一次,最合适的是【0】。

开始练习 →

两种找法的步数

在 [13, 15, 17, 23, 24] 里找 24。运行下面这段程序: def lsteps(a, target): n = 0 for x in a: n += 1 if x == t

开始练习 →

第一步:线性查找

最终作品第一步:写出 lfind(找不到返回 -1)。 把两个结果拼起来输出:找 17、找 20,中间用 / 隔开。

开始练习 →

第二步:二分查找

写出 bfind(闭区间 + while lo <= hi)。 把三个结果拼起来输出:找 24、找 13、找 20。

开始练习 →

第三步:重复元素的左右边界

写出 left_bound 和 right_bound,在 [13, 15, 17, 17, 17, 23, 24] 里定位 17。 把 左边界/右边界/出现次数 拼起来输出。

开始练习 →

第四步:前缀搜索

写出 Trie 的构建和 suggest,在 apple / app / apply / banana 里补全 app。 把结果按字典序用 / 拼起来输出。

开始练习 →