LeetCode 673 最長遞增子序列的個數

簡單動態規劃

from typing import *
class Solution:
    def findNumberOfLIS(self, nums: List[int]) -> int:
        if not nums:
            return 0
        dp=[1]*len(nums)
        cnts=[1]*len(nums)
        for i in range(1,len(nums)):
            for j in range(i):
                if nums[j]<nums[i]:
                    if dp[j]+1>dp[i]:
                        dp[i]=dp[j]+1
                        cnts[i]=cnts[j]
                    elif dp[j]+1==dp[i]:
                        cnts[i]+=cnts[j]
        max_len=max(dp)
        res=0
        for i in range(len(dp)):
            if dp[i]==max_len:
                res+=cnts[i]
        return res

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章