leetcode代码记录(最长递增子序列

目录

  • 1. 题目:
  • 2. 我的代码:
  • 小结:

1. 题目:

在这里插入图片描述

给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。

子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。

示例 1:

输入:nums = [10,9,2,5,3,7,101,18]
输出:4
解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。

示例 2:

输入:nums = [0,1,0,3,2,3]
输出:4

示例 3:

输入:nums = [7,7,7,7,7,7,7]
输出:1

2. 我的代码:

class Solution:def lengthOfLIS(self, nums: List[int]) -> int:# dp数组下标的含义:[0, i]子数组;dp数组的含义:包含了第i个数后的序列的最长递增子序列dp = [1] * len(nums)# 递推公式for i in range(1, len(nums)):for j in range(0, i):if nums[i] > nums[j]:dp[i] = max(dp[j] + 1, dp[i])return max(dp)

最长递增子序列,可以用一维dp解决,dp数组下标的含义:[0, i]子数组;dp数组的含义:包含了第i个数后的序列的最长递增子序列。有点像是一个树状的结构,后面节点需要前面比它小的节点中与其连接(这就需要挨个判断,判断之前走过的每一个dp)

一定要注意,是只有在nums[i] > nums[j]时,才能去更新dp[i],更新时加上本节点的长度1,因此递推公式为:dp[i] = max(dp[j] + 1, dp[i])

要返回的应当时所有的dp中最大的,因为dp[i]只代表以第i个节点为结尾的子序列,包含最后一个节点的dp并不一定就是最大的。

小结:

关注我给大家分享更多有趣的知识,以下是个人公众号,提供 ||代码兼职|| ||代码问题求解||
添加我的公众号即可:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/600628.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

六部提问法让ChatGPT帮你写论文

教程出自b站:ChatGPT六步提问法:你若诚心发问,它会给你一篇惊艳论文!_哔哩哔哩_bilibili 1、现象确认(先把你要写的论文题目拿其中的核心论点来像它提问) 确定你和chatgpt理解在同一个频道。 2、学术概念化…

JVM虚拟机(一)介绍、JVM组成、堆、栈、方法区/元空间、直接内存

目录 一、JVM 介绍1.1 为什么要学 JVM?1.2 JVM 是什么? 二、JVM 组成2.1 程序计数器2.2 Java堆1)JVM 内存结构2)Java 1.7 和 1.8 中堆的区别 2.3 Java虚拟机栈1)虚拟机栈 和 栈帧2)常见面试题 2.4 方法区/元…

二、【易 AI】Live2d 简介与使用

When you cry for missing the sun, you will miss the stars again. 当你为错过太阳而哭泣时,你也要再错过群星了。 ——泰戈尔 一、Live2d 简介 Live2D是一种基于2D图像的动态角色技术,它能够将静态的2D角色转化为具有丰富表情和动作的实时交互角色。通过使用Live2D,开发…

【Segment Anything Model】十三:Meta的最新工作EfficientSAM,微调到自己的数据集,代码。

🍉 博主微信 cvxiayixiao 还有其他专栏点击头像查询 🍓 【Segment Anything Model】计算机视觉检测分割任务专栏。 🍑 【公开数据集预处理】特别是医疗公开数据集的接受和预处理,提供代码讲解。 🍈 【opencv图像处理】…

git提交代码时报错,提不了

问题 今天在换了新电脑,提交代码时报错 ✖ eslint --fix found some errors. Please fix them and try committing again. ✖ 21 problems (20 errors, 1 warning) husky > pre-commit hook failed (add --no-verify to bypass) 解决 通过 --no-verify 解决&…

基于java JSP 实现的固定资产管理系统

开发语言:Java 框架:ssm 技术:JSP JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea 系统展示 前台首页功能模块 固…

硬件标准化之道:Linux社区与硬件厂商的协同创新

在Linux的广阔世界中🌌,与各式各样的硬件设备进行互动和协作是一项不断进行的挑战🔧。硬件厂商和Linux社区的紧密合作,通过制定一系列标准和协议📜,使得从键盘🎹和鼠标🖱到复杂的网络…

nodejs应用程序以守护进程daemon的方式启动,容器化部署的时候一直部署出错,导致无法成功启动程序。

一、背景 nodejs应用程序使用Egg.js 框架脚本命令,见package.json: "scripts": {"debug": "egg-bin debug","clean": "easy clean","build": "easy build prod","start&…

Java中的流程控制语句

目录 一、if条件语句 二、switch分支语句 三、for循环 四、while循环 五、do...while循环 六、break、continue关键字 1、break 2、continue 一、if条件语句 如果条件表达式true,就执行if的语句代码块。它有以下几种格式: // 第一种&#xff1…

买卖股票的最佳时机III

题目链接 买卖股票的最佳时机III 题目描述 注意点 1 < prices.length < 1000000 < prices[i] < 100000不能同时参与多笔交易&#xff08;必须在再次购买前出售掉之前的股票&#xff09;最多可以完成 两笔 交易 解答思路 本题最多可以完成两笔交易&#xff0c;…

ModelSim的使用

如何用Modelsim编译高云FPGA的库(高云IP核的联合仿真) 1.找到高云云源软件自带的IP库,在安装目录下,如下: C:\Gowin\Gowin_V1.9.7.06Beta\IDE\simlib,这个路径下包含小蜜蜂家族和晨曦家族两大类,根据自己的实际使用选 2.在Modelsim的安装路径下建一个编译云源库的存放…

常用的深度学习自动标注软件

0. 简介 自动标注软件是一个非常节省人力资源的操作&#xff0c;而随着深度学习的发展&#xff0c;这些自动化标定软件也越来越多。本文章将会着重介绍其中比较经典的自动标注软件 1. AutoLabelImg AutoLabelImg 除了labelimg的初始功能外&#xff0c;额外包含十多种辅助标注…