解法1,复杂度O(n)

class Solution:def lengthOfLIS(self, nums: List[int]) -> int:# 解法1,复杂度O(n)# 定义dp[]是以第i个元素结尾得最长字串长度,则答案就是dp中最大的那个数,转移方程为dp[i] =max(dp[i],dp[j]+1) if nums[j]<nums[i] j=0...i# 含义就是前面的看第i个可以加到前面的子序列后面不(大于前面的就可以加上去,然后序列长度+1),因为可能第i个数可以加在好几个后面,所以取最大dp=[]for i in range(len(nums)):dp.append(1)for j in range(i):if nums[j]<nums[i]:dp[i] =max(dp[i],dp[j]+1)return max(dp)

解法2,复杂度O(nln(n))

from bisect import bisect_leftclass Solution:def lengthOfLIS(self, nums: List[int]) -> int:# 解法2,复杂度O(nln(n))'''相当于维护一个结果数组,如果当前元素比结果数组的值都大的的话,就追加在结果数组后面(相当于递增序列长度加了1)保证是个有序数组;否则的话用当前元素覆盖掉第一个比它大的元素(这样做的话后续递增序列才有可能更长,即使并没有更长,这个覆盖操作也并没有副作用哈,当然这个覆盖操作可能会让最终的结果数组值并不是最终的递增序列值,这无所谓)'''res= []length = 0for number in nums:index = bisect_left(res,number)    # https://blog.csdn.net/qq_43657442/article/details/109486471if index==length:res.append(number)length += 1else:res[index] = numberreturn length

力扣300、最长上升子序列动态规划刷题相关推荐

  1. 找出最具竞争力的子序列_力扣300——最长上升子序列

    这道题主要涉及动态规划,优化时可以考虑贪心算法和二分查找. 原题 给定一个无序的整数数组,找到其中最长上升子序列的长度. 示例: 输入: [10,9,2,5,3,7,101,18]输出: 4 解释: ...

  2. python【力扣LeetCode算法题库】300 最长上升子序列(动态规划)

    最长上升子序列 给定一个无序的整数数组,找到其中最长上升子序列的长度. 示例: 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的 ...

  3. 111. Leetcode 300. 最长递增子序列 (动态规划-子序列问题)

    步骤一.确定状态: 确定dp数组及下标含义 dp是长度为len(nums)的数组,dp[i]表示以nums[i]结尾的最长子序列的长度, 这个定义中 nums[i] 必须被选取,且必须是这个子序列的最 ...

  4. LeetCode 300. 最长上升子序列(动态规划)

    题目描述 给定一个无序的整数数组,找到其中最长上升子序列的长度. 示例: 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 ...

  5. C语言(CED)最长公共子序列----动态规划第一题

    一.动态规划算法与分治法的异同 相同点: A.二者均是将待求解的问题分成若干子问题来求解. B.二者在编写代码的时候,都要用到递归. 不同点: A.分治法求解的问题,在将问题分成若干子问题之后,其子问 ...

  6. Leetcode 300 最长递增子序列 (每日一题 20210803)

    给你一个整数数组 nums ,找到其中最长严格递增子序列的长度.子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序.例如,[3,6,2,7] 是数组 [0,3,1,6,2 ...

  7. LeetCode高频题300. 最长递增子序列

    LeetCode高频题300. 最长递增子序列 提示:本题是系列LeetCode的150道高频题,你未来遇到的互联网大厂的笔试和面试考题,基本都是从这上面改编而来的题目 互联网大厂们在公司养了一大批A ...

  8. 力扣-718最长重复子数组(dp)

    力扣-718最长重复子数组 1.题目 给两个整数数组 nums1 和 nums2 ,返回 两个数组中 公共的 .长度最长的子数组的长度 . 示例 1: 输入:nums1 = [1,2,3,2,1], ...

  9. 北京大学郭炜-最长上升子序列 动态规划讲解

    北京大学郭炜-最长上升子序列 动态规划讲解 问题原型: 解题思路: 找子问题,题目要求我们求1~n的最长上升子序列的长度,那我们想一想:1-2个元素的最长上升子序列的长度是多少,第1个元素的最长上升子 ...

最新文章

  1. mysql中的各种锁把我搞糊涂啦~
  2. 单元测试mock之mockito使用
  3. 为sort函数指定排序规则时注意的问题以及错误的写法
  4. Windows下搭建Eclipse+Android4.0开发环境
  5. CRM呼叫中心采用轮询和SNS服务器两种方式的架构
  6. qtimer不触发原因_迷你世界:触发器玩法多,教你摆表情就能拥有满格血量
  7. MySQL基础 - 注意事项
  8. 使用Mongo Shell和Java驱动程序的MongoDB Map Reduce示例
  9. 你是如何看待 ‘裸辞’ 这件事的?
  10. 2B: 怎么把黑科技卖给顶级金融机构? | 甲子光年
  11. jquery api中文手册
  12. Linux与网络基础知识
  13. html简单登录页面代码
  14. Excel:带有相关单元格引用的Python xlwings复制粘贴公式
  15. pta mysql训练题集(341-360)
  16. 【全栈编程系列】SpringBoot整合Shiro(含KickoutSessionControlFilter并发在线人数控制以及不生效问题、配置启动异常No SecurityManager...)
  17. 案例一: 使用IDA PRO+OllyDbg+PEview 追踪windows API 动态链接库函数的调用过程。 首先用文本编辑器写一个C++源程序名为StackFrame.cpp ,代码如下:
  18. JS数组的创建及正则表达式的对象
  19. Java 用Freemarker完美导出word文档(带图片)
  20. 多边形画椭圆算法java_运用椭圆画法,45行代码画出随意正多边形

热门文章

  1. 亚商投资顾问早餐FM/0213金融资产分类
  2. sockaddr_in结构体
  3. 解决:YOLOv5 is out of date by 16 commits. Use ‘git pull‘ or ‘git clone
  4. 中文字符串分割的一些思路
  5. 如何删除需要使用管理员权限才能删除的文件?
  6. 市场需求升级,cv5200带来新的WiFi传输解决方案,远距离无线通信技术
  7. 2018年6月英语六级阅读单词
  8. 2023年 PCB产业危机,全面价格战恐将开启
  9. 如何使用图片制作翻页电子书?
  10. pytorch的下载解决方案(下载出错、下载过慢问题)