查找整数数组中最大单调递增序列长度的快速算法是什么。
答案 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值因为它是一个递增的序列而结束时),则检索最后一个数组值。
如果没有,则创建一个新变量并循环遍历数组,如果它大于临时变量中存储的值,则循环分配当前值。