做一个自动补全

做一个自动补全

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

阅读更多 →
数出以某个前缀开头的词有几个

数出以某个前缀开头的词有几个

补全 count_prefix:先走到前缀那个节点,再递归数出下面有多少个词尾标记。 这次数 app 开头的。

阅读更多 →
app 自己算不算一个词

app 自己算不算一个词

同一个词库。运行下面这段程序: def build_trie(words): t = {} for w in words: node = t for c

阅读更多 →
以 app 开头的有几个

以 app 开头的有几个

词库是 apple、app、apply、banana。运行下面这段程序: def build_trie(words): t = {} for w in words: n

阅读更多 →
有序数组二分能不能做前缀搜索

有序数组二分能不能做前缀搜索

把词库排好序再二分,做前缀搜索【0】。

阅读更多 →
前缀搜索用 Trie 比扫全表强在哪

前缀搜索用 Trie 比扫全表强在哪

做"以某个前缀开头"的搜索,Trie 比扫一遍全表强在【0】。

阅读更多 →
三个边界一起验

三个边界一起验

写一个正确的二分,然后一次验三条:找 24(最后一格)得 4、找 13(第一格)得 0、找 20(不存在)得 -1。 三条全过输出 边界通过,否则输出 有失败。

阅读更多 →
⚠️ 修一个会转不出来的二分

⚠️ 修一个会转不出来的二分

下面这段二分忘了更新边界,范围永远不缩小。 模板里放了一个 guard 步数上限,不改的话它会返回 -2(而不是把判题机挂住)。 把两句边界更新补上,然后找 24。

阅读更多 →
⚠️ 修一个漏查的二分

⚠️ 修一个漏查的二分

下面这段二分用了 while lo < hi,会漏掉最后一格。 把它改对,然后找 24。

阅读更多 →
改成 `lo <= hi` 呢

改成 `lo <= hi` 呢

同一段代码,只把循环条件改成 lo <= hi。运行它: def bfind(a, target): lo = 0 hi = len(a) - 1 while lo &l

阅读更多 →