【发布时间】:2017-05-22 10:16:41
【问题描述】:
给定向量大小 n 和窗口大小 k,如何在 n log k 时间内有效地计算滑动窗口最小值?即,对于向量 [1 4 3 2 5 4 2] 和窗口大小 2,输出将是 [1 3 2 2 4 2]。
显然我可以使用分区和映射来做到这一点,但那是 n * k 时间。
我认为我需要跟踪已排序地图中的最小值,并在地图位于窗口外时对其进行更新。但是,虽然我可以在日志时间内获得排序地图的最小值,但在地图中搜索以查找任何过期的索引并不是记录时间。
谢谢。
【问题讨论】:
-
这似乎更像是一个算法问题,而不是 Clojure 问题。如果您有一个算法,有人可以帮助您在 Clojure 中实现它。但事实上,这有点像“帮我解决面试问题”之类的事情。