在为我的数据结构做准备时,我遇到了这个问题:
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。
答案 0 :(得分:0)
这是一个被充分研究的问题,称为最长增加子序列,可以在O(n log n)时间内求解。见http://en.wikipedia.org/wiki/Longest_increasing_subsequence