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

Popular posts from this blog

Cognizant Html css js CC

Java sba