【发布时间】:2020-05-25 09:05:14
【问题描述】:
假设您有一个包含值和长度的线对象。如何设计一个数据结构,这样每当你插入一个新的线对象时,它不仅会存储它,还会返回每个长度比新线对象短的线对象的值的总和。每次插入的时间复杂度应该是 O(logn)。整体时间复杂度可以是 O(nlogn)。
我曾尝试使用分段树,但对如何调整它来解决我的问题有点困惑。因为我认为线段树本身并不能真正帮助我只过滤长度比新插入的线对象短的线对象。
【问题讨论】:
-
为什么不允许对它们进行排序?将它们保持在排序顺序是否被视为排序?如果是这样,如何以固定的排序顺序存储它们以规避此要求?
-
对不起,我编辑了一点,因为原来的有点偏离我真正想问的,排序没有任何限制
-
然后使用二分查找(根据长度)找到插入的位置,这个是O(log n)
-
所以我还是应该使用段树数据结构然后二分查找找到插入位置?