利用动态规划,分配一个数组,每个元素存储着以前索引位置为终点的最大上升子序列的长度,经过一次遍历根据数组前面的值更新当前位置值,最后数组中的最大值为最大上升子序列的最大长度。
def maxLen(arr):
u = [1 for i in range(len(arr))]
for i in range(1, len(arr)):
for j in range(i):
if arr[j] < arr[i]:
u[i] = max(u[i], u[j] + 1)
return max(u)
if __name__ == '__main__':
arr = [1, 7, 3, 5, 9, 4, 8, 20, 19]
print(maxLen(arr))