当前位置: 首页 > 知识库问答 >
问题:

一组不相交递减序列的最长递增子序列

轩辕天佑
2023-03-14

假设我们有一些不相交的递减序列:

s1={10,8,2}
s2={9,5,4,1}
s3={7,6,3}

我选择一些递减序列(例如按顺序s2,s1,s2,s3,s2的5个递减序列)并将它们级联(结果序列s={9,5,4,1,10,8,2,9,5,4,1,7,6,3,9,5,4,1,7,6,3,9,5,4,1}

现在我想求S中最长递增子序列的长度,在上面的示例中:5->{1,2,4,7,9}

预期时间复杂度小于O(S)。

共有1个答案

濮波
2023-03-14

最长递增子序列的长度不能大于2。因为你连接的序列是递减的,所以如果你从一个序列的最后一个数到另一个序列的第一个数,它只能是递增的序列。要找出序列S中是否存在长度为2的递增子序列,您只需关注要连接的序列的结尾和开头。

 类似资料:
  • 最长增子序列是我们熟知的问题,我用耐心算法给出了一个解决方案。 我曾想过先用我的算法,然后找到长度为N的第一个序列,但不知道该怎么做。 那么,如何从随机整数序列中找到第一个最长的递增子序列呢? 我的代码段: 我的代码返回:1 2 8 第一个序列是:3 6 8 另一个例子: 我的代码正确返回:1 2 3 基本上,只要第一个最长序列与最佳最长序列相同,我的代码就能工作。但是当你有一堆相同长度的最长序列

  • 我在阅读了允许K个异常的最长递增子序列后创建了这个线程。我意识到提问的人并没有真正理解这个问题,因为他指的是一个链接,该链接解决了“允许一次更改的最长递增子数组”问题。所以他得到的答案实际上与李的问题无关。 假设给定一个长度为N的数组A。查找允许K个异常的最长递增子序列。 示例:N=9,K=1 A=[3,9,4,5,8,6,1,3,7] 答案:7 说明: 最长递增子序列为:3,4,5,8(或6),

  • 问题-给定一个长度为N的整数数组,求最长子序列的长度,该序列先增加后减少。投入:[1,11,2,10,4,5,2,1] 产出:6 说明:[1,210,4,21]是最长的子序列。 我写了一个自上而下的方法。我有五个参数--vector A(包含序列)、start index(表示当前索引)、previer value、large(表示当前子序列中的最大值)和map(m)stl。 对于回溯方法,我有两

  • 在最多一个序列存在重复的情况下,可以将最长公共子序列问题转化为最长递增子序列问题。减少问题的过程说明在这里: 假设您有以下序列: 然后,创建一个整数序列S3,其中您必须将S2的每个元素的位置放在S1中(如果元素在S1中不存在,那么忽略那个元素)。在本例中: 这种方法是如何工作的?为什么这种约简解决了寻找最长公共子序列的问题?

  • 我为最长的递增子序列生成了以下代码: 输入:nums=[10,9,2,5,3,7,101,18] 输出:4 说明:最长的递增子序列是[2,3,7,101],因此长度为4。 有人能帮我理解这句话吗 三个点的意义是什么?正如我们所知,映射生成键值对,映射与切片一起做什么?

  • 我为最长的递增子序列编写了一个递归解,它运行得非常好。但是当我在同一个代码上应用dp时,它给出了不同的答案。问题链接:https://practice.geeksforgeeks.org/problems/longest-increasing-subsequence-1587115620/1递归代码: DP代码: 我不知道我做错了什么?对于这个测试用例6(n)6 3 7 4 6 9(arr[]),