class Solution:
def lengthOfLIS(self, nums: List[int]) -> int:
if not nums:
return 0
else:
dp = [1 for _ in range(len(nums))]
for l in range(len(nums)):
for i in range(l):
if nums[i] < nums[l]:
dp[l] = max(dp[l], dp[i]+1)
return max(dp)
时间复杂度O(n^2) 循环遍历嵌套
空间复杂度O(n) dp的长度
将原数组拆分成多个子数组,原数组长度为n就拆分成n个子数组长度分别是0,1,……n,在得知第n-1
子数组的解的情况下,就可以求出n
子数组的解。
解 f(n) = max( f(n-1), f(n)+1) 当 nums(i) > nums(n) ( i < n )