【发布时间】:2016-01-09 22:20:36
【问题描述】:
我需要设计一个数据结构来保存n-length 序列,方法如下:
-
increasing()- 返回最长递增子序列的长度 -
change(i, x)- 将 x 添加到序列的第 i 个元素
直观地说,这听起来像是可以用某种区间树来解决的。但我不知道怎么想。
我想知道如何使用这个事实,我们完全不需要知道这个子序列的样子,我们只需要它的长度......
也许这是可以使用的东西,但我几乎被困在这一点上。
【问题讨论】:
-
您的意思是连续子序列吗?
-
不,我的意思是一般的子序列,我认为连续的情况要简单得多。
-
我假设了这么多,但我想在尝试对 valdem 的回答做出正面或反面之前确定一下
-
所以如果我理解正确的话,它应该是可变数量的可变长度序列。这个数据结构中的每个序列可以是任何顺序。
increasing()返回最长的递增子序列,它可能是整个序列,也可能是其中的一部分。 'change(i,x)' 追加 (?)x到ith 子序列?那么,是否存在恒定数量的序列?或者是否有其他操作来创建一个新的空序列? -
或者..再读一遍,数据结构保存了一个single可变长度序列和
change(i,x)insertsx@987654329 @th 在单个序列中的位置?你打算采取哪种行为?