给定一个未排序的整数数组,找到最长递增子序列的个数。
列:
输入: [1,3,5,4,7] 输出: 2 解释: 有两个最长递增子序列,分别是 [1, 3, 4, 7] 和[1, 3, 5, 7]。
# 解析:完全遍历,内圈比较,在比较长度的同时对其数量进行存储。
class Solution(object):
def findNumberOfLIS(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
size = len(nums) # 数组长度
if size <= 1: return size # 0,1特殊情况
dp = [1] * size # 初始化每一位对应的最长序列值
count = [1] * size # 初始化每一位对应的最长序列值的数目
maxCount = 0 # 最长序列
for i in range(1, size): # 外圈遍历
for j in range(i): # 内圈遍历
if nums[i] > nums[j]: # 大于时才存在递增,才能进入判断
if dp[j] + 1 >dp[i]: # 若j的序列长度+1较大
dp[i] = dp[j] +1 # 那么更新i的dp序列长度
count[i] = count