动态规划
我们维护一个列表,来比较当前最长子序列,和之前找到的最长子序列长度。
我们建立一个列表dp
dp[i]表示的是前i个元素中最长子序列长度,注意nums[i] 一定要选取!
然后在前i个元素里再进行一轮循环
dp[i] = dp[j] + 1
class Solution:
def lengthOfLIS(self, nums: List[int]) -> int:
"""
动态规划
:param nums:
:return:
"""
if not nums:
return 0
dp = []
for i in range(len(nums)):
dp.append(1)
for j in range(i):
if nums[i] > nums[j]:
dp[i] = max(dp[i], dp[j]+1)
return max(dp)