Un Leetcode por día: 673. El número de la subsecuencia creciente más larga [Programación dinámica]

Inserte la descripción de la imagen aquí

class Solution(object):
    def findNumberOfLIS(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        n = len(nums)
        if n<=0: return n

        dp = [1]*n
        count = [1]*n

        for i in range(1,n):
            for j in range(0,i):
                if nums[i]>nums[j]:
                    # 第一次找到当前的值
                    if dp[j]+1 > dp[i]:
                        dp[i] = dp[j]+1
                        count[i] = count[j]
                    # 再次遇到当前值
                    elif dp[j]+1 == dp[i]:
                        count[i] += count[j]
        
        longest = max(dp)
        return sum(c for i,c in enumerate(count) if dp[i]==longest)

Supongo que te gusta

Origin blog.csdn.net/weixin_41041275/article/details/112967556
Recomendado
Clasificación