jinxuan
9/10/2017 - 4:26 AM

1point3acres

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