赞
踩
R4-dp
目录
- class Solution:
- def lengthOfLIS(self, nums: List[int]) -> int:
- #最简单的方法
- n=len(nums)
- if n<2:
- return n
- mx=1
- for i in range(n):
- max_i=1
- for j in range(i+1,n):
- if nums[i]<nums[j]:
- nums[i]=nums[j]
- max_i+=1
- mx=max(mx,max_i)
- return mx
先取了013,但0123才是最长的
观其思路,每次遍历数组后面的部分都会被遍历到,所以我们还不如从背后出发,这恰好就是
- class Solution:
- def lengthOfLIS(self, nums: List[int]) -> int:
- #dp
- if not nums:
- return 0
- 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)
- class Solution:
- def lengthOfLIS(self, nums: List[int]) -> int:
- #单调栈
- stack=[]
- for num in nums:
- if not stack or num>stack[-1]:
- stack.append(num)
- else:
- stack[bisect.bisect_left(stack,num)]=num
- return len(stack)
刁钻,合理
又get一个新知识
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。