在给定每个部分的端点列表的情况下,我应该使用什么样的数据结构/算法来查找当前的部分?
例如,如果我有一个包含章节标题和内容的网页,
我目前处于130px,它应该返回我目前处于"第1部分".
通过端点数组进行二进制搜索
from bisect import bisect_left
arr = [100, 350, 700, 1200]
pos = bisect_left(arr, 130, 0, arr[-1])
Run Code Online (Sandbox Code Playgroud)
但是,对于每个位置变化,这仍然可能需要O(log n).
哈希表查找当前位置,
lookup = {0: "Introduction"
1: "Introduction"
...
10: "Section 1"
11: "Section 1"
...
}
section = lookup[130/10]
Run Code Online (Sandbox Code Playgroud)
这很快,但浪费了很多空间
是否有处理此类问题的通用数据结构/算法?
algorithm ×1