有没有特定的算法可以让我在小/中型滑动窗口(典型大小为600,所有元素均为整数)上保持最小值/最大值?窗口实际上是流中的最后N个观测值。因此,我在每个时间单位添加一个新的观测值并删除最旧的观测值,所以我想保留最后N个观察值的最小值和最大值。
这是与Sliding window minimum algorithm中所述问题不同的问题,因为我没有维护整个数据,因此“基于索引”的解决方案在这里不适用。此外,我的输入数据本身将处于循环数组中。
堆可能不太适合:我不会删除/弹出最小/最大元素,而是最旧的元素,这将使拥有堆的目的失效。
基于log(n)复杂度的结构,例如红黑树将完美地工作,而伸展树可能更适合我所拥有的数据类型,但对于我要处理的规模来说,它们是否有点过度设计?
这是与Sliding window minimum algorithm中所述问题不同的问题,因为我没有维护整个数据,因此“基于索引”的解决方案在这里不适用。此外,我的输入数据本身将处于循环数组中。
堆可能不太适合:我不会删除/弹出最小/最大元素,而是最旧的元素,这将使拥有堆的目的失效。
基于log(n)复杂度的结构,例如红黑树将完美地工作,而伸展树可能更适合我所拥有的数据类型,但对于我要处理的规模来说,它们是否有点过度设计?