思路
定義 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)