找出最大增长序列的长度

时间:2010-02-22 09:54:54

标签: algorithm

查找整数数组中最大单调递增序列长度的快速算法是什么。

4 个答案:

答案 0 :(得分:3)

来自Wikipedia: Longest increasing subsequence(O( n log n ))

L = 0
for i = 1, 2, ... n:
   binary search for the largest positive j ≤ L such that X[M[j]] < X[i] (or set j = 0 if no such value exists)
   P[i] = M[j]
   if j == L or X[i] < X[M[j+1]]:
      M[j+1] = i
      L = max(L, j+1)

答案 1 :(得分:1)

正如Mehrdad所说,LIS至少接近你所需要的。使用动态编程 / memoization 可以最有效地实现此功能。如果您对此类内容感兴趣,我建议您前往TopCoder

答案 2 :(得分:1)

您可以使用动态编程来解决此问题。使用动态编程解决此问题的方法如下:

http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=dynProg

答案 3 :(得分:0)

不确定你的算法是什么意思,但这是一个想法。

如果数组默认排序(即当创建数组laregst值因为它是一个递增的序列而结束时),则检索最后一个数组值。

如果没有,则创建一个新变量并循环遍历数组,如果它大于临时变量中存储的值,则循环分配当前值。