python - 最长递增序列的最大值

标签 python algorithm

我有一个代码可以找到列表的所有循环,例如 [1,2,3] 循环是 [1,2,3], [2,3,1], [3,1, 2].我还有一个用于查找最长递增子序列的代码。

我想做的是输入一个列表,找到该列表每个循环的最长递增子序列,然后返回所有这些中的最大长度。我如何从这两个函数找到每个循环的 LIS,然后返回最大值?

到目前为止,这是我的代码:

def cycles(X):

  n = len(X)

  values = []

  for i in range(0,n):
    values.append(X[i:n] + X[0:i])

  return values    



def longest_increasing_subsequence(d):

    l = []

    for i in range(len(d)):

        l.append(max([l[j] for j in range(i) if l[j][-1] < d[i]] or  [[]], key=len)  + [d[i]])


    return len(max(l, key=len))

如果有任何帮助,我将不胜感激。谢谢。

最佳答案

这将完成工作:

l=[1,2,3,4]
s=cycles(l)
lis=[longest_increasing_subsequence(d) for d in s]
print(lis) 
print(max(lis))

结果是

[4,3,2,3]

4

关于python - 最长递增序列的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43166358/

相关文章:

javascript - 如何将数字列表转换为唯一的两个对

algorithm - 证明和反驳 BigO

python - 在python控制台中显示中文字符

python - 将 MATLAB quadgk 集成转换为具有长函数的 Scipy quad 以进行集成(传递 lambda 函数的任何替代方法?)

python - celery 记录到文件中

python - Kivy-python : duplicate image on texture

java - 如何获得空白的jtextfield?

python - jedi-vim 与 jedi 输出不一致

sql - 如何从两个用户之间的连接表中检索一组连接的用户?

algorithm - 获取 : [1, 1,1,1] 形式的向量