Longest Increasing Subsequence

Given an integer array nums, return the length of the longest strictly increasing subsequence. Pattern focus: LIS. Build the best subsequence ending at each position and reuse previous states efficiently.

Input Format

nums = array of integers

Output Format

length of the longest strictly increasing subsequence

Constraints

  • 1 <= nums.length <= 10^5
  • -10^9 <= nums[i] <= 10^9

Examples

Example 1:

Input:

nums = [10,9,2,5,3,7,101,18]

Output:

4

Explanation:

One longest increasing subsequence is [2, 3, 7, 101].

Example 2:

Input:

nums = [0,1,0,3,2,3]

Output:

4

Explanation:

One longest increasing subsequence is [0, 1, 2, 3].

Example 3:

Input:

nums = [7,7,7,7,7]

Output:

1

Explanation:

All values are equal, so the longest strictly increasing subsequence has length 1.

Loading...
Longest Increasing Subsequence - Dp Advanced