Length of subsequence
# LEETCODE-SERIES-Longest-Increasing-Subsequence
Given an integer array nums, return the length of the longest strictly increasing
subsequence
.
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
Example 3:
Input: nums = [7,7,7,7,7,7,7]
Output: 1
Constraints:
1 <= nums.length <= 2500
-104 <= nums[i] <= 104
/*
time: O(nlogn)
space: O(n)
*/
public class Solution {
public int LengthOfLIS(int[] nums)
{
if(nums.Length == 0) return 0;
List<int> dp = new List<int>();
foreach(var num in nums)
{
int left = 0;
int right = dp.Count;
while(left < right)
{
int mid = left + (right - left)/2;
if(dp[mid] < num)
{
left = mid + 1;
}
else
{
right = mid;
}
}
if(left >= dp.Count)
{
dp.Add(num);
}
else
{
dp[left] = num;
}
}
return dp.Count;
}
}
Comments
Post a Comment