本题给出一个数字列表,要求在其中找出一个最长的递增序列,找出的数字可以不连续。
解题:本题考虑用动态规划的方法来做,先建立一个数组dp[],dp[i]表示到nums[i]这个数的最长递增序列,这样通过遍历比较就能递推出各自的dp[i]最后返回最大的那个dp就行。
代码:
class Solution:
def lengthOfLIS(self, nums: List[int]) -> int:
res=0
dp=[1]*(len(nums))
for i in range(len(nums)):
for j in range(i):
if nums[i]>nums[j] and dp[i]<dp[j]+1:
dp[i]=dp[j]+1
res=max(res,dp[i])
return res