Skip to main content

673. Number of Longest Increasing Subsequence

https://leetcode.com/problems/number-of-longest-increasing-subsequence/

Python

class Solution:
def findNumberOfLIS(self, nums: List[int]) -> int:
n = len(nums)
dp = [1 for _ in range(n)]
counter = [1 for _ in range(n)]

max_item = 1

for i in range(1, n):
for j in range(i):
if nums[i] <= nums[j]:
continue

if dp[i] == dp[j]+1:
counter[i] += counter[j]
continue

if dp[i] < dp[j]+1:
dp[i] = dp[j] + 1
counter[i] = counter[j]
max_item = max(max_item, dp[i])

ans = 0
for i, item in enumerate(dp):
if item == max_item:
ans += counter[i]
return ans