最长升序列 DP
2024-08-26 10:21:31
class Solution:
def lengthOfLIS(self,nums):
if not nums:return 0 #边界处理
dp = [1 for _ in range(len(nums))] #转态的定义,dp[i]表示当前时刻的最长升序列的值
for i in range(len(nums)): #第一次从前向后遍历
for j in range(i): #从0到当前时刻遍历
if nums[j] < nums[i]: #如果出现升序的情况
dp[i] = max(dp[i],dp[j]+1) #状态转移为当前时刻与之前时刻+1的最大值作为当前的状态
print(dp)
return max(dp)
if __name__ == '__main__':
solution = Solution()
nums = [10,9,2,5,3,7,101,18] #结果是[2,3,7,101] 长度为4
res = solution.lengthOfLIS(nums)
print('最长序列:',res)
结果:
最新文章
- top
- Magento文件系统目录结构
- linux系统date命令详解
- 安装好android的adt以后重启eclipse,但是没有创建AVD的图标
- python2 编码问题详解
- 【转】Android LruCache源码介绍
- MyBatis 一级缓存,二级缓存,延迟加载设置
- Paper | 量化CV任务的关联性,寻找最佳迁移策略(Taskonomy)
- java.lang.String &; java.lang.StringBuilder
- HDU 4763 Theme Section(KMP灵活应用)
- Vagrant 管理部署 VirtualBox (推荐使用)
- 22.1 、react生命周期(一)
- HBase Snapshot原理和实现
- 搜索+剪枝——POJ 1011 Sticks
- OC仿支付宝输入UITextField输入车牌号
- PID算法控制简单理解
- [UE4]使用另一个相机Scene Capture Component 2D当小地图
- GPS 编程笔记
- bootstrap2.2相关文档
- php $_FILES处理文件上传