DEV Community

Abhishek Chaudhary
Abhishek Chaudhary

Posted on

1

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. For example, [3,6,2,7] is a subsequence of the array [0,3,1,6,2,2,7].

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

Follow up: Can you come up with an algorithm that runs in O(n log(n)) time complexity?

SOLUTION:

class Solution:
    def lis(self, nums, i):
        if i == 0:
            return 1
        if self.cache[i] != -1:
            return self.cache[i]
        mlen = 1
        for j in range(i):
            if nums[j] < nums[i]:
                curr = 1 + self.lis(nums, j)
                mlen = max(mlen, curr)
        self.cache[i] = mlen
        return mlen

    def lengthOfLIS(self, nums: List[int]) -> int:
        n = len(nums)
        self.cache = [-1] * n
        mlen = 1
        for i in range(n):
            curr = self.lis(nums, i)
            mlen = max(mlen, curr)
        return mlen
Enter fullscreen mode Exit fullscreen mode

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay