最长的子序列,其元素构成一组递增的整数

Longest sub-sequence the elements of which make up a set of increasing integers

本文关键字:整数 一组 元素      更新时间:2023-10-16

查找数组中最长连续子序列的长度,该数组的元素构成一组连续递增的整数。 输入文件由数字n(数组中的元素数)后跟n整数组成。示例输入 - 10 1 6 4 5 2 3
8 10 7 7 示例输出 - 6(1 6 4 5 2 3,
因为它们使集合为 1 2 3 4 5 6)。
我能够编写一个满足0<n<5000的算法,但为了获得 100 分,该算法必须为0<=n<=50000工作。

这样的事情怎么样?按降序排列数组元素,每个元素及其索引范围作为局部最大值(例如,A[0] = 10数组索引的最大值,[0, 10],而A[3] = 4数组索引的局部最大值,[3,3]。现在遍历此列表并找到最长的连续降序序列,其中索引范围都包含在起始范围内。

10 1 6 4 5 2 3 8 10 7 7
=> 10, [ 0,10]
8, [ 1, 7]
7, [ 9,10]
6, [ 1, 6] <--
5, [ 3, 6]    | ranges
4, [ 3, 3]    | all
3, [ 5, 6]    | contained
2, [ 5, 5]    | in [1,6]
1, [ 1, 1] <--