Menu
CoddyTech

Longest Increasing Subsequence

你会得到一个整数列表 nums。子序列保留其中一些元素,并保持它们原来的顺序,丢弃其余元素;保留的元素不必彼此相邻。返回值从左到右严格递增的最长子序列的长度。连续两个相等的值不算递增。

函数

lengthOfLIS(nums: integer-array) → integer
numsinteger-array
可供选择的整数列表
返回值integer
最长严格递增子序列的长度

约束条件

  • 1 ≤ nums.length ≤ 2500
  • -104 ≤ nums[i] ≤ 104

示例

输入
nums = [3, 1, 8, 2, 5, 9, 4, 7]
输出
4
解释
1、2、5、9 是递增的,1、2、5、7 和 1、2、4、7 也都是递增的:长度为 4。没有任何由 5 个值组成的序列能保持递增。
challenge icon

进阶

你能否在返回最长递增子序列本身及其长度的同时,仍以 O(n log n) 的时间运行?

重置代码
def lengthOfLIS(nums):
    # 在这里编写代码

测试 #1

测试 #2

测试 #3

参数

nums = [3, 1, 8, 2, 5, 9, 4, 7]

预期输出

4