【发布时间】:2012-06-03 12:00:34
【问题描述】:
是否有特定算法允许我在中小型滑动窗口(典型大小为 600,所有元素均为整数)上保持最小/最大值?窗口实际上是流中的最后 N 个观测值。所以,我添加了一个新的观察并删除了每个时间单位最旧的观察,所以我想保留最后 N 个观察的最小值和最大值。
这是与Sliding window minimum algorithm 中所述的问题不同的问题,因为我不维护整个数据,因此“基于索引”的解决方案在这里不适用。此外,我的输入数据本身将在一个循环数组中。
堆可能不会很好地工作:我不会删除/弹出最小/最大元素,而是最旧的元素,这将破坏首先拥有堆的目的。
log(n) 基于复杂性的结构(例如红黑树)可以正常工作,而展开树可能更适合我拥有的数据类型,但它们是否有点矫枉过正我要处理的尺寸?
【问题讨论】:
-
迟到总比不到好,将来可能会对人们有所帮助。确实有算法:home.tiac.net/~cri/2001/slidingmin.html
-
上面的链接失效了,但是我在archive.org上找到了一个版本:web.archive.org/web/20120805114719/http://home.tiac.net/~cri/…
-
您实际上不需要跟踪不断增加的索引,您只需要以窗口大小为模来跟踪它。因此,您的索引将从 0 变为 599,然后返回 0。
-
这能回答你的问题吗? stackoverflow.com/questions/8499227
标签: algorithm minimum sliding-window