交付:四种找法一起验收

交付:四种找法一起验收

这是这条路线的最终作品。把线性、二分、左右边界、前缀搜索全写出来,然后一次验完五条: 线性查找:找 17 得 2,找 20 得 -1 二分查找:找 24 得 4,找 13 得 0,找 20 得 -1

阅读更多 →
第四步:前缀搜索

第四步:前缀搜索

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

阅读更多 →
第三步:重复元素的左右边界

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

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

阅读更多 →
第二步:二分查找

第二步:二分查找

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

阅读更多 →
第一步:线性查找

第一步:线性查找

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

阅读更多 →
两种找法的步数

两种找法的步数

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

阅读更多 →
无序数组只查一次

无序数组只查一次

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

阅读更多 →
选搜索算法先看什么

选搜索算法先看什么

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

阅读更多 →
⚠️ 词库大了之后差多少

⚠️ 词库大了之后差多少

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

阅读更多 →
前缀有和没有,一次验两种

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

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

阅读更多 →