-3

我找不到任何解决我的问题的方法:(。有人可以帮我找到(或写)这个带有评论的算法吗?我自己做不到。我花了至少 3 个小时,一无所获。

非常感谢!

4

1 回答 1

0

保留一个向量“v[x] = y”,其中 y 是原始序列的最小元素,它给出了长度为 x 的最长递增子序列。原来你只有v[0] = -inf.

遍历一个元素的序列,使用二进制搜索a在向量中查找它。v你不会找到a确切的,而是最大xv[x] <= a(<如果它严格增加)。因此,以 a 结尾的最长递增子序列将是 length x+1。现在更新v[x+1]为 a(它不能小于 a,否则您的搜索应该有 return x+1),您可能需要扩展向量。

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

于 2016-05-11T09:39:27.380 回答