最长递增子序列的长度

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

题目描述

给定一个整数数组 nums,找到其中最长严格递增子序列的长度。子序列不要求连续,但要求元素在原数组中的相对顺序保持不变。例如数组 [10,9,2,5,3,7,101,18] 的最长递增子序列为 [2,3,7,101],长度为 4。

输入格式

第一行一个整数 n(1 ≤ n ≤ 2000),表示数组长度。第二行 n 个整数,表示数组元素(-10000 ≤ nums[i] ≤ 10000),整数之间用空格分隔。

输出格式

输出一个整数,表示最长严格递增子序列的长度。

输入输出样例

样例 1

输入:

8
10 9 2 5 3 7 101 18

输出:

4

说明/提示

考虑动态规划或二分查找两种解法,O(n log n) 的解法更优