使用2-3树的最长增加的子序列

时间:2015-03-15 03:52:55

标签: algorithm data-structures

在为我的数据结构做准备时,我遇到了这个问题:

A - 给定的长度为n的整数数组。

建议数据结构,支持以下操作:

Init(A) - 给定阵列A的结构的初始化。最坏情况复杂度:O(nlogn)。 LengthOfLongest() - 返回A(元素)的最长单调增长s的长度。最坏情况复杂:O(1)。

我知道这是一个众所周知的问题,我知道相关的wiki文章。然而,那里提供的解决方案对我来说并不直观。

我得到了一个暗示,例如,这个问题也可以通过2-3级树来解决。

有人可以用2-3树解释我的解决方案吗?

实施例: 对于数组A = {10,9,11,8,12,7,13} 最长的子阵列是{10,11,12,13},长度为4。

1 个答案:

答案 0 :(得分:0)

这是一个被充分研究的问题,称为最长增加子序列,可以在O(n log n)时间内求解。见http://en.wikipedia.org/wiki/Longest_increasing_subsequence