Longest Subsequence

HEADING

300. Longest Increasing Subsequence (Medium)

def lengthOfLIS(self, nums: List[int]) -> int:
    @lru_cache(maxsize=None)
    def rec(i):
        if i >= len(nums):
            return 1
        maxi = 1
        for j in range(i, len(nums)):
            if nums[i] < nums[j]:
                maxi = max(maxi, 1 + rec(j))
        return maxi

    dp = [rec(i) for i in range(len(nums))]
    return max(dp)