力扣674-最长连续递增序列(Java详细题解)

题目链接:674. 最长连续递增序列 - 力扣(LeetCode)

前情提要:

因为本人最近都来刷dp类的题目所以该题就默认用dp方法来做。

dp五部曲。

1.确定dp数组和i下标的含义。

2.确定递推公式。

3.dp初始化。

4.确定dp的遍历顺序。

5.如果没有ac打印dp数组 利于debug。

每一个dp题目如果都用这五步分析清楚,那么这道题就能解出来了。

题目思路:

该题对比于力扣300-最长递增子序列,不同点就在于本题是求连续的递增序列。他要求序列是连续的。

继续用dp五部曲来分析:

1.确定dp数组和i下标的含义。

dp[i] 指的就是以i下标为结尾的数组所能找到的最长且连续递增的子序列。

2.确定递推公式。

既然要找连续子序列,说明下标为i的状态,只与他前一个状态(i - 1)有关。

当nums[i] > nums[i - 1]时,这样才是一个连续递增的序列,才能加入我们的结果集。

所以本题就用一层循环,不断求nums[i - 1]和nums[i]的状态对比。

所以递推公式就为dp[i] = Math.max(dp[i - 1] + 1,dp[i]);

当nums[i] > nums[i - 1]时,我们得把以i - 1为结尾的最长递增子序列求出再加上nums[i]的长度就为以i为结尾的最长连续递增子序列。

因为我们要取最大,所以还需要对dp[i]取一个最大值。

3.dp初始化。

由dp定义可知。dp[i]取不同的i都至少有一个最长连续递增的序列,所以我们就让dp数组的所有值都初始化为1。

4.确定dp的遍历顺序。

由递推公式可以推出dp[i]的状态只与dp[i - 1]有关,所以遍历顺序一定是要从前往后遍历的。

5.如果没有ac打印dp数组 利于debug。

在这里插入图片描述

最终代码:

class Solution {public int findLengthOfLCIS(int[] nums) {//该题与上一个题唯一的区别就是他要是连续的 连续的话 如果 nums[i - 1] < nums[i] 那么dp[i] = dp[i - 1] + 1;//在这里我初始化result = 1就是为了当nums.length = 1的情况会不进循环,直接返回result,而此时result 如果为0,那么结果就为0。//而就算nums.length = 1,他的连续递增子序列也应该是1,就是他本身,所以我初始化为1就是为了避免这个情况。int result = 1;int dp [] = new int [nums.length + 1];Arrays.fill(dp,1);for(int i = 1;i < nums.length;i ++){if(nums[i] > nums[i - 1]){dp[i] = dp[i - 1] + 1;}result = Math.max(result,dp[i]);}return result;}
}

这一篇博客就到这了,如果你有什么疑问和想法可以打在评论区,或者私信我。

我很乐意为你解答。那么我们下篇再见!

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

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

相关文章

算法笔记/USACO Guide GOLD金组DP 3. Paths on Grids

今天学习背包DP&#xff08;Knapsack DP) 是USACO Guide的DP章节中第三点 What is grid DP? -Summary DP problems often involve a 2D grid where paths are analyzed. Movement is restricted to one direction on the x-axis and y-axis, typically starting from one c…

分页查询,pageHelper, pagehelper-spring-boot-starter

一、传统分页查询 要想从数据库中进行分页查询&#xff0c;我们要使用LIMIT关键字&#xff0c;格式为&#xff1a;limit 开始索引 每页显示的条数 查询第1页数据的SQL语句是&#xff1a; select * from emp limit 0,10;查询第2页数据的SQL语句是&#xff1a; select * from …

MySQL高阶1783-大满贯数量

题目 找出每一个球员赢得大满贯比赛的次数。结果不包含没有赢得比赛的球员的ID 。 结果集 无顺序要求 。 准备数据 Create table If Not Exists Players (player_id int, player_name varchar(20)); Create table If Not Exists Championships (year int, Wimbledon int, F…

Agile Modbus STM32裸机移植 从机使用

本教程手把手教你实现Agile Modbus&#xff0c;照抄就能成。 并且会解读函数功能含义。 1. 引言 Agile Modbus 是一个轻量级的 Modbus 协议栈&#xff0c;可以满足用户在任何场景下的需求。 功能 支持 rtu 和 tcp 协议&#xff0c;使用纯 C 语言开发&#xff0c;不涉及任何硬…

《微处理器系统原理与应用设计第十三讲》通用同/异步收发器USART轮询模式应用设计

USART提供两设备之间的串行双工通信&#xff0c;并支持中断和DMA工作。采用轮询、中断和DMA三种方式进行数据收发。 一、功能需求 实现远程串行通信数据的回传确认。微处理器系统构成的测控设备通过USART&#xff08;串口&#xff09;与用户设备&#xff08;上位机&#xff0…

OpenHarmony(鸿蒙南向开发)——标准系统方案之扬帆移植案例

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ OpenHarmony&#xff08;鸿蒙南向开发&#xff09;——轻量系统STM32F407芯片移植案…

Java中的事务管理

1.1 事务管理 1.1 事务回顾 事务是一组操作的集合&#xff0c;它是一个不可分割的工作单位。事务会把所有的操作作为一个整体&#xff0c;一起向数据库提交或者是撤销操作请求。所以这组操作要么同时成功&#xff0c;要么同时失败。 怎么样来控制这组操作&#xff0c;让这组操…

C++list的使用:尾插、头插、insert、erase、reverse、sort等的介绍

文章目录 前言一、尾插、头插、insert、erase二、reverse、sort总结 前言 Clist的使用&#xff1a;尾插、头插、insert、erase、reverse、sort等的介绍 一、尾插、头插、insert、erase #include <iostream> #include <list>using namespace std;void test_list1(…

【算法】BFS系列之 FloodFill 算法

【ps】本篇有 4 道 leetcode OJ。 目录 一、算法简介 二、相关例题 1&#xff09;图像渲染 .1- 题目解析 .2- 代码编写 2&#xff09;岛屿数量 .1- 题目解析 .2- 代码编写 3&#xff09;岛屿的最大面积 .1- 题目解析 .2- 代码编写 4&#xff09;被围绕的区域 .1- …

3DMAX动画渲染一百帧云渲染解决方案!

随着数字媒体快速发展&#xff0c;3D动画以其逼真的视觉效果和动态表现力&#xff0c;成为众多行业的首选。然而&#xff0c;高质量的3D动画渲染往往需要大量的计算资源。对于3DMAX动画渲染的一百帧&#xff0c;该如何的通过云渲染技术高效处理呢&#xff0c;我们一起来简单看看…

大中小企业应该如何选择PLM系统?PLM系统最新选型指南攻略

在当今竞争激烈的市场环境中&#xff0c;产品生命周期管理&#xff08;PLM&#xff09;系统已成为企业不可或缺的工具&#xff0c;它帮助企业有效地管理从产品设计到淘汰的整个生命周期。然而&#xff0c;不同规模的企业在选择PLM系统时面临着不同的挑战和需求。本文将分析小型…

云计算实训50——Kubernetes基础命令、常用指令

一、Kubernetes 自动补齐 # 安装自动补齐软件 [rootmaster ~]# yum -y install bash-completion # 临时开启自动补齐功能 [rootmaster ~]# source # 永 久开启自动补齐功能 [rootmaster ~]# echo "source > ~/.bashrc 二、Kubernetes 基础命令 kubectl [command] …

C++伟大发明--模版

C起初是不受外界关注的&#xff0c;别人觉得他和C语言没有本质上的区别&#xff0c;只是方便些&#xff0c;直到祖师爷发明了模版&#xff0c;开始和C语言有了根本的区别。 我们通过一个小小的例子来搞清楚什么是模版&#xff0c;模版的作用到底有多大&#xff0c;平时我们想要…

【Python报错已解决】 Requests.exceptions.ProxyError: HTTPSConnectionPool

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

上证50股指期权如何交易?

今天期权懂带你了解上证50股指期权如何交易&#xff1f;上证50期权的交易是一个涉及多个步骤和策略的过程。 上证期权 上证期权是指在上海证券交易所交易的期权合约&#xff0c;主要包括上证50ETF期权等。它是一种金融衍生品&#xff0c;给予持有者在特定日期以约定价格买入或…

【数据结构与算法 | 灵神题单 | 自底向上DFS篇】力扣508, 1026, 951

1. 力扣508&#xff1a;出现次数最多的子树元素和 1.1 题目&#xff1a; 给你一个二叉树的根结点 root &#xff0c;请返回出现次数最多的子树元素和。如果有多个元素出现的次数相同&#xff0c;返回所有出现次数最多的子树元素和&#xff08;不限顺序&#xff09;。 一个结…

【项目设计】Facial-Hunter

目录 一、项目介绍 二、开发环境以及技术 三、项目架构设计 3.1 项目总体架构 3.2 客户端架构 3.3 主服务端架构 3.4 处理服务端架构 3.5 数据库设计 四、FaceNet 五、代码实现 一、项目介绍 该项目是基于深度学习与负载均衡的人脸识别系统 该项目主要由三个部分组…

CytoTRACE2单细胞分化潜力预测工具学习

开发者在github中把关键点介绍的很清楚了。 1、根据细胞的分化潜能对细胞进行分类&#xff1a; totipotent(多谱系分化的全能)—pluripotent(多谱系分化的多能)—multipotent(谱系限制分化的多能)—oligopoten(谱系限制分化的寡能)—unipotent(谱系限制分化的单能)—differen…

裸土检测算法实际应用、裸土检测算法样本、裸土检测算法精准检测

裸土检测算法是一种前沿的图像识别技术&#xff0c;它通过利用先进的图像处理技术和机器学习算法&#xff0c;从卫星图像、无人机拍摄的图像或其他地面监测数据中提取出裸土区域&#xff0c;并对其进行精确的分类和分析。 与传统的地面勘察方法相比&#xff0c;裸土检测算法具有…

Redisson分布式锁分析,可重入、可续锁(看门狗)

前言 在此说明&#xff0c;本文章不只是讲一些抽象的概念&#xff0c;而是可落地的&#xff0c;在日常工作中基本上进行修改一下便可以使用。书接上回&#xff0c;上篇自研分布式锁的文章使用是一个自己手写的一个分布式锁&#xff0c;按照JUC里面java.util.concurrent.locks.L…