滑动窗口最小算法
Posted
技术标签:
【中文标题】滑动窗口最小算法【英文标题】:Sliding window minimum algorithm 【发布时间】:2011-05-06 13:41:36 【问题描述】:这是一道作业题。令 A[] 是一个整数数组和整数 K——窗口大小。当它滑过 A 时,生成在窗口中看到的最小值数组 M。我发现 an article 有解决此问题的方法,但不明白 为什么 它具有 O(n) 复杂性。谁能给我解释一下?
【问题讨论】:
@Andre: "the homework tag, like other so-called 'meta' tags, is now discouraged." 哦,不知道。在***.com/questions/4114917/… 上看到了它的请求。也许标签的描述中应该有一个注释? 【参考方案1】:这往往会让人出局。你会认为这需要O(N^2)
时间,因为你添加需要O(N)
时间并且你有O(N)
元素。但是,实现每个元素只能添加一次和删除一次。所以总共需要O(N)
滑过整个数组A
。
每次将滑动窗口移动一个元素时,这会产生O(1)
的摊销效率。也就是说,滑动窗口移动一个元素的平均时间是O(1)
。
【讨论】:
以上是关于滑动窗口最小算法的主要内容,如果未能解决你的问题,请参考以下文章