我无法找到解决问题的方法:(。 有人可以帮我找到(或写)带有注释的算法吗? 我自己不能这样做。我花了至少3个小时而没有。
BIG谢谢!
答案 0 :(得分:0)
保持向量' v [x] = y'其中y是原始序列的最小元素,它给出了长度x的最长增长子序列。最初你只有v[0] = -inf
。
遍历元素a
的序列,使用二进制搜索在向量v
中查找。您不会完全找到a
,但最大的x
会v[x] <= a
(&lt;如果它严格增加)。因此,以a结尾的最长增长子序列的长度为x+1
。现在将v[x+1]
更新为a(它不能小于a,否则您的搜索应该返回x+1
),您可能需要扩展该向量。
LIS的长度是矢量的大小。如果需要重建解决方案,请跟踪您使用的位置。