最长递增子序列(力扣)动态规划 JAVA

news2024/11/15 8:31:26

给你一个整数数组 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

提示:

1 <= nums.length <= 2500
-10*4 <= nums[i] <= 10^4

进阶:

你能将算法的时间复杂度降低到 O(n log(n)) 吗?

解题思路:

1.设立数组dp[i] = n,表示以i为结尾的序列的最大值

2.每更新一个新i就与i前面的数字作比较,看能否更新

3.dp[i] = max(dp[j] + 1, dp[i])

4.初始值为1因为长度至少为1

在这里插入图片描述

代码:

class Solution {
    public int lengthOfLIS(int[] nums) {
          int dp[] = new int[nums.length];
          int maxlen = 1;
          for(int i = 0; i < nums.length; i ++) {
        	  dp[i] = 1;
          for(int j = 0; j < i; j ++) {  
        	  if(nums[i] > nums[j]) dp[i] = Math.max(dp[j] + 1, dp[i]);
        	   
          }
          maxlen = Math.max(maxlen, dp[i]);
          }
          return maxlen;
    }
}

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

路径规划算法:基于袋獾优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于袋獾优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于袋獾优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化算法袋獾…

【vueJs源码】阅读之vm.$watch函数

我们经常使用watch肯定知道它&#xff0c;他和computer一样都是数据发生变化都会触发它。今天我们就来了解一下它的原理。 他的用法 Vue.prototype.$watch function (expOrFn: string | (() > any),cb: any,options?: Record<string, any> ): Function这是vuejs源…

Redis数据类型 — String

目录 String类型的内部编码 存储字符串采用两种编码方式的优缺点 选择SDS的原因 存储整数型采用OBJ_ENCODING_INT的原因 String 类型的底层的数据结构实现主要是 long 和 SDS&#xff08;简单动态字符串&#xff09; 数据结构&#xff1a;SDShttps://blog.csdn.net/weixin…

六种最新智能优化算法(LSO、SWO、ZOA、EVO、KOA、GRO)求解23个基准测试函数(含参考文献及MATLAB代码)

一、六种算法简介 &#xff08;1&#xff09;光谱优化算法LSO 光谱优化算法&#xff08;Light Spectrum Optimizer&#xff0c;LSO&#xff09;由Mohamed Abdel-Basset等人于2022年提出。 参考文献&#xff1a;Abdel-Basset M, Mohamed R, Sallam KM, Chakrabortty RK. Light…

单链表基本操作(java)

单链表 一.自定义链表类二.自定义节点类三.链表中的基本方法1.头插法2.尾插法3.在任意位置插入4.删除第一次的关键字为key的节点5.删除所有关键字为key的元素6.是否包含关键字key7.获取链表长度8.遍历节点并输出9.清空链表 一.自定义链表类 public class MySingleList {Node h…

vue+element Cascader 级联选择器 > 实现省市区三级联动

vueelement Cascader 级联选择器 > 实现省市区三级联动 先看下实现效果吧&#xff08;嘻嘻&#xff09; 看完我们就开始啦 安装element-china-area-data1 npm install element-china-area-data5.0.2 -S上代码 <el-cascadersize"large":options"options…

我的创作纪念日-静下来走一段路

静下来走一段路 机缘 前段时间收到了公司发的入职周年庆典的邮件&#xff0c;发觉已经在程序员的工作上走了这么多年了。 原本想写些东西只是为了生成一些可供自己反复查看的笔记&#xff0c;后来为了督促自己学习&#xff0c;博客越学越多。 回忆起我写的第一篇博客《芯片、模…

移动端开发框架mui之上拉刷新、下拉加载数据(选项卡左右移动自动和刷新指定选项卡内容)

移动端开发框架mui之上拉刷新、下拉加载数据&#xff08;加载多选项卡数据&#xff09; 之前的代码&#xff1a; <!doctype html> <html><head><meta charset"utf-8"><title></title><meta name"viewport" cont…

JVM内存结构—— 程序计数器,虚拟机栈 解析

JVM的内存结构 1. 程序计数器(PC Register )寄存器 1.1 全称:Program Counter Register 1.2 作用 首先,java源代码 被 编译成 二进制的 字节码 (jvm指令) jvm跨平台就是这一套指令,linux 下,windows下指令都是一致的 指令 经过 解释器 把每一条指令 解释成 机器码…

在Vue中如何根据下拉框选中的值 展示不同的输入框

大纲&#xff1a; &#x1f333; 1、怎么根据下拉框中选中的值展示不同的输入框呢&#xff1f; 我们可以使用change事件来进行处理。当我们选中收费类型的其中一个就触发change事件&#xff0c;然后根据选中的value值&#xff0c;对数据进行展示与隐藏 即可。 &#x1f951; …

BIO、NIO、AIO之间有什么区别

一、简介 在计算机中&#xff0c;IO 传输数据有三种工作方式&#xff0c;分别是&#xff1a; BIO、NIO、AIO。 在讲解 BIO、NIO、AIO 之前&#xff0c;我们先来回顾一下这几个概念&#xff1a;同步与异步&#xff0c;阻塞与非阻塞。 同步与异步的区别 同步就是发起一个请求后…

“从草图到魔法:使用ClipDrop - Stable Doodle将你的想象变成真实图像“

ClipDrop - Stable Doodle 是一款将手绘草图转换为真实图像的工具&#xff0c;您可以按照以下步骤使用它&#xff1a; 1、打开https://clipdrop.co/stable-doodle 2、使用鼠标画一幅画 3、输入提示词&#xff0c;比如&#xff1a;mikey mouse 按“generate”按钮 4、结果

春秋云境—Initial

文章目录 春秋云境—Initial一、前期准备1、靶标介绍2、相关设备 二、WEB渗透1、ThinkPHP RCE&#xff08;1&#xff09;、打开网站&#xff08;2&#xff09;、检测漏洞 2、蚁剑连接3、sudo提权4、frpc代理5、fsacn扫描 三、后渗透1、信呼OA RCE&#xff08;1&#xff09;、1.…

Android 14适配

Google I/O 2023 发布的 Android beta2 &#xff0c;Android 14 将在2023年第三季度发布。Google Play 已经开始强制要求targetSdkVersion 33适配&#xff0c;所以 targetSdkVersion 34适配也是非常有必要的。 前台服务类型&#xff08;Foreground service types are required&…

4. 设计(黑盒)测试用例 (一) 等价类 边界值 判定表

本篇文章我们将详细介绍如何来测试用例。 1. 设计测试用例的基本要素 1.1 测试用例概念 测试用例&#xff08;Test Case&#xff09;是为了实施测试而向被测试的系统提供的一组集合。 1.2 测试用例要素 测试环境、测试步骤、测试数据、预期结果。 1.3 测试用例的重要性 提…

架构训练营学习笔记:4-1存储架构模式之数据库存储架构

一 数据库读写分离 适应场景&#xff1a;互联网读多写少。 原理&#xff1a;主机负责写&#xff0c;从机可以多个负责读取。数据主从做同步。 业务的写发给主机&#xff0c;读操作发给从机。 条件&#xff1a;1业务量增长 2 其他优化条件已处理&#xff08;索引优化、缓存&a…

Linux学习之环境变量、预定义变量和位置变量

环境变量是每个Shell打开就能获取到的变量&#xff0c;即一打开终端就已经初始化的变量。 显示环境变量 set、env和declare都可以查看变量的值。按照可以查看信息的范围从小到大是env<set<declare。 env只能显示全局变量。 set可以输出所有的变量&#xff0c;包括全局…

多数据源切换、读写分离-02

使用dynamic进行数据源切换、读写分离 特性 1、支持数据源分组 &#xff0c;适用于多种场景纯粹多库读写分离一主多从混合模式。 2、支持数据库敏感配置信息 加密 ENC()。 3、支持每个数据库独立初始化表结构schema和数据库database。 4、支持无数据源启动&#xff0c;支持懒加…

【已解决】pyecharts大屏点击Save Config没反应,无法保存chart_config.json

在使用pyecharts开发大屏时&#xff0c;临时大屏拖拽好之后&#xff0c;点击Save Config之后没反应&#xff0c;没有弹出json保存对话框。 报错现象&#xff1a; 利用Python的pyecharts库的Page组件开发可视化大屏时&#xff0c;无法点击Save Config按钮。 问题原因&#xff1…

sonarqube安装并配置CI/CD

sonarqube安装使用 目录 简介效果(配置在下面查看)官方文档环境准备配置compose-sonarqube.yml启动登录集成Gitlab 获取私钥sonarqube配置gitlab查看项目 配置 手动方式Gitlab CI/CD 自动检测 简介 SonarQube是一个开源的代码质量管理平台&#xff0c;用于对代码进行静态代…