【发布时间】:2016-02-13 03:50:23
【问题描述】:
我对此有疑问:
我们有一个整数数组(大小为 n)[x_1,x_2,...,x_n]
我们必须找到最长的公共部分[x_i,x_i+1,...,x_j] 最小的(x_i,x_i+1,...,x_j) >= j-i+1 f.e [2,2,1,4,3,3,1] -> 3(最长的正确部分是4,3,3)
我不知道如何减少低于O(n^2) 的时间(检查每一段)
我的第二个想法是:每个值x_k 等于这部分可能具有的“长度范围”,如果数字较小,则我们更改“长度范围”(同时计算该段的长度),但我如果我们得到更多的数字,不知道该怎么办
(我会非常感谢任何帮助 - 可能还有另一个更简单的解决方案,但我没有看到)
【问题讨论】:
-
你的意思是最长的连续切片,其中最小值高于数组其余部分的值吗?
-
您也可以要求一个切片,其最小值大于切片的长度