300.最长递增子序列-python
300.最长递增子序列(中等)
题目大意:给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。
子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。
题目
给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。
子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。
示例1:
1 |
|
示例2:
1 |
|
示例3:
1 |
|
提示:
- 1 <= nums.length <= 2500
- 104 <= nums[i] <= 104
分析和解答
解法一:O(n^2)向前查找法
O(n^2)的解法还是比较好想的(简单题),先创建一个一维dp数组,然后走到每个位置的时候要往前看,看看前边比当前数字小的那些数组位置处,选择一个这些位置里dp值最大的,+1得到现在这个位置的dp值。最后返回max(dp)就可以
解题:
1 |
|
解法二:优化解法(二分查找)待补充
300.最长递增子序列-python
http://example.com/2021/12/01/algorithms/leetcode-python/300-最长递增子序列-python/