给定一系列N个数,提取长度为K的序列的数量小于R?

时间:2012-10-14 13:05:53

标签: c++ algorithm dynamic-programming

有一个整数数组,我必须找到K长度的序列数,其范围(子序列的max - min)小于等于R.是否有长度为k的序列数之间的关系和长度为K-1的序列数 ? 我正在尝试解决关于SPOJ的练习题。我不想要完整的解决方案,只需指出正确的方向/建议/提示。

我正在考虑使用类似deque的结构来将数组的min和max元素维持到某个索引。但是,当k更接近n时,这将变得接近o(n * n),这太慢了,我理想地看O(n)解决方案或O(n * log n)解决方案。如果我可以使用递归/迭代关系计算K = 1到K = N的所需值,那将是最好的,因为可能再次需要相同的答案

1 个答案:

答案 0 :(得分:0)

这是双端队列的完美应用。请参阅我的回答here

您应该能够根据自己的需要进行调整,几乎不做任何更改,为您提供O(N)解决方案。