1point3acres
class Solution(object):
def findNumberOfLIS(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if not nums:
return 0
n = len(nums)
dp = [[1, 1] for _ in range(n)]
for i in range(1, n):
for j in range(0, i):
if nums[i] > nums[j]:
dp[i][0] = max(dp[i][0], dp[j][0] + 1)
for j in range(0, i):
if nums[i] > nums[j] and dp[j][0] + 1 == dp[i][0]:
dp[i][1] += dp[j][1]
if dp[i][1] != 1:
dp[i][1] -= 1
print dp
max_list = max(map(lambda x:x[0], dp))
res = 0
for i in dp:
if i[0] == max_list:
res += i[1]
return res