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)
Un Leetcode por día: 673. El número de la subsecuencia creciente más larga [Programación dinámica]
Supongo que te gusta
Origin blog.csdn.net/weixin_41041275/article/details/112967556
Recomendado
Clasificación