一个够用的树状数组至少要有哪几样
手写一个够用的树状数组,至少要有【0】。
线段树和树状数组怎么选
同样能做区间和,线段树和树状数组的取舍是【0】。
这个数组的前缀和长什么样
运行下面这段程序: A = [17, 24, 15, 13, 23] s = 0 out = [] for x in A: s += x out.append(s) print("/".join(str(
第一步:lowbit 和建表
最终作品第一步:写出 lowbit 和 fen_build。 建好之后输出树状数组第 4 格存的值——按规则它应该是前 4 个数的和。
第二步:前缀和与区间和
加上 fen_prefix 和 fen_range。 把两个结果拼起来输出:前 3 个的和、第 2 到第 4 个的和,中间用 / 隔开。
第三步:单点修改
加上 fen_add:给第 i 个加 v,往上一路加 lowbit 更新。 给第 2 个加 10 之后,输出前 3 个的和。
第四步:再写一个布隆过滤器
写出 8 位的布隆过滤器(两个哈希:k % 8 和 (k * 3) % 8),加进 17、24、15。 把三个查询结果拼起来输出(用 / 隔开):查 15、查 13、查 10。 ⚠️ 中间那个 13 从没加过,但结果会是"可能在&
交付:树状数组 + 布隆过滤器
这是这条路线的最终作品。把树状数组(lowbit / fen_build / fen_prefix / fen_range / fen_add)和布隆过滤器都写出来,然后一次验完五条: 前 3 个的和是 56,整段的和是 92 第 2 到第
⚠️ 选结构之前的第一件事
拿到一个需求,动手选数据结构之前,第一件事是【0】。
需求写着"按插入顺序列出最近 10 条"
查得多 写得多 需求里出现"按插入顺序列出最近 10 条",这句话直接排除了【0】。