LIS - PHP O中最长的增长子序列算法(nlogn)

时间:2016-05-11 07:51:52

标签: php algorithm math lis

我无法找到解决问题的方法:(。 有人可以帮我找到(或写)带有注释的算法吗? 我自己不能这样做。我花了至少3个小时而没有。

BIG谢谢!

1 个答案:

答案 0 :(得分:0)

保持向量' v [x] = y'其中y是原始序列的最小元素,它给出了长度x的最长增长子序列。最初你只有v[0] = -inf

遍历元素a的序列,使用二进制搜索在向量v中查找。您不会完全找到a,但最大的xv[x] <= a(&lt;如果它严格增加)。因此,以a结尾的最长增长子序列的长度为x+1。现在将v[x+1]更新为a(它不能小于a,否则您的搜索应该返回x+1),您可能需要扩展该向量。

LIS的长度是矢量的大小。如果需要重建解决方案,请跟踪您使用的位置。