思路
定义 dp[i] 表示以第 i 个元素结尾的最长递增子序列的长度,初始时每个位置的最长子序列长度为 1。然后通过双重循环遍历每一对元素 j < i,如果 nums[i] > nums[j],说明 nums[i] 可以接在 nums[j] 的递增序列之后,更新 dp[i] = max(dp[i], dp[j] + 1)。最终返回 dp 中的最大值,即整个数组中最长递增子序列的长度。
class Solution:def lengthOfLIS(self, nums: List[int]) -> int:n=len(nums)dp=[1]*n for i in range(n):for j in range(i):if nums[i]>nums[j]:dp[i]=max(dp[i],dp[j]+1)return max(dp)