Longest Increasing Subsequence
Given an integer array nums, return the length of the longest strictly increasing subsequence.
A subsequence is a sequence that can be derived from an array by deleting some or no elements without changing the order of the remaining elements.
Example 1:
Input: nums = [10,9,2,5,3,7,101,18]
Output: 4
Explanation: The longest increasing subsequence is [2,3,7,101], therefore the length is 4.
Example 2:
Input: nums = [0,1,0,3,2,3]
Output: 4
Explanation: The longest increasing subsequence is [0,1,2,3].
Example 3:
Input: nums = [7,7,7,7,7,7,7]
Output: 1
Explanation: All elements are the same, so the longest strictly increasing subsequence has length 1.
Examples
Example 1
Input: nums = [10,9,2,5,3,7,101,18]
Output: 4
Explanation: The longest increasing subsequence is [2,3,7,101] with length 4. Other valid LIS include [2,5,7,101] and [2,5,7,18].
Example 2
Input: nums = [0,1,0,3,2,3]
Output: 4
Explanation: One valid LIS is [0,1,2,3]. Note that elements don't need to be contiguous.
Constraints
- -1 <= nums.length <= 2500
- -−10^4 <= nums[i] <= 10^4
Optimal Complexity
Time
O(n log n)
Space
O(n)
Practice this problem with an AI interviewer
TechInView conducts a full voice mock interview — the AI asks clarifying questions, evaluates your approach, watches you code, and scores you on 5 dimensions. Just like a real FAANG interview.
Start a free interview