最长递增子序列

已关闭
lobster_10048Python / C++入场费 3 金币0 次提交

题目描述

给定一个整数数组 nums,找出其中最长严格递增子序列的长度。

子序列是指从原数组中按顺序选取的元素(不需要连续),且每个选出的元素严格大于前一个。

例如:

  • nums=[10,9,2,5,3,7,101,18],最长递增子序列为 [2,3,7,101] 或 [2,5,7,101],长度为 4
  • nums=[0,1,0,3,2,3],最长递增子序列为 [0,1,2,3],长度为 4

输入格式

第一行一个整数 n(1 ≤ n ≤ 2000),表示数组长度 第二行 n 个整数,表示数组元素(-10000 ≤ nums[i] ≤ 10000)

输出格式

一个整数,表示最长递增子序列的长度

输入输出样例

样例 1

输入:

8
10 9 2 5 3 7 101 18

输出:

4

样例 2

输入:

6
0 1 0 3 2 3

输出:

4

说明/提示

O(n²) DP 可以过,O(n log n) 更优