LeetCode674. 最长连续递增序列

  • 阅读本文之前,需要先了解“动态规划方法论”,这在我的文章以前有讲过

链接:动态规划方法论

  • 本文之前也讲过一篇文章:最长递增子序列,这道题,阅读本文的同时可以与“最长递增子序列进行对比”,这样更能对比二者的区别!

LeetCode300.最长递增子序列 - Tomorrowland_D - 博客园 (cnblogs.com)

  • leetcode链接如下

力扣题目链接:

题目叙述

给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。

连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每个 l <= i < r,都有 nums[i] < nums[i + 1] ,那么子序列 [nums[l], nums[l + 1], ..., nums[r - 1], nums[r]] 就是连续递增子序列。

示例 1:

  • 输入:nums = [1,3,5,4,7]
  • 输出:3
  • 解释:最长连续递增序列是 [1,3,5], 长度为3。尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为 5 和 7 在原数组里被 4 隔开。

示例 2:

  • 输入:nums = [2,2,2,2,2]
  • 输出:1
  • 解释:最长连续递增序列是 [2], 长度为1。

提示:

  • 0 <= nums.length <= 10^4
  • -10^9 <= nums[i] <= 10^9

动态规划思路讲解:

状态变量及其含义

  • 我们可以设置状态变量dp[i],表示以nums[i]为结尾的最长连续子序列的长度

递推公式

  • 这里我们不需要j指针,只需要将nums[i]与nums[i-1]作比较,判断它们两个是否能继续构成连续递增子序列,如果nums[i]<nums[i-1],证明nums[i]不能与nums[i-1]构成连续递增子序列,所以说dp[i]=0

  • nums[i]>nums[i-1]时,意味nums[i]与前面能继续构成连续递增子序列,所以dp[i]=dp[i-1]+1

  • 故而递推公式为:

    • dp[i]=0 (nums[i]<=nums[i-1]);
    • dp[i]=dp[i-1]+1 (nums[i]>nums[i-1])

遍历顺序

  • 这题dp[i]需要由dp[i-1]来推理出来,所以说遍历顺序显然是从前向后遍历。

如何初始化dp数组?

  • 显然,一开始dp数组中的所有元素都初始化为1,因为每个元素至少都有一个最长连续递增子序列。

举例验证dp数组

  • 举例:nums = [1,3,5,4,7]

    • dp[0]=1
    • dp[1]=2
    • dp[2]=3
    • dp[3]=0
    • dp[4]=2
  • 通过示例1的分析,我们也可以得知我们的dp数组是正确的

代码实现:

class Solution {
public:
int findLengthOfLCIS(vector<int>& nums) {
//全都初始化为1
vector<int> dp(nums.size(),1);
//结果至少是1
int ans=1;
for(int i=1;i<nums.size();i++){
if(nums[i]>nums[i-1]) dp[i]=dp[i-1]+1;
ans=max(ans,dp[i]);
}
return ans;
}
};

线性dp:LeetCode674. 最长连续递增序列的更多相关文章

  1. [Swift]LeetCode674. 最长连续递增序列 | Longest Continuous Increasing Subsequence

    Given an unsorted array of integers, find the length of longest continuous increasing subsequence (s ...

  2. LeetCode674. 最长连续递增序列

    原题链接 1 class Solution: 2 def findLengthOfLCIS(self, nums: List[int]) -> int: 3 ans = begin = 0 4 ...

  3. Leetcode674.Longest Continuous Increasing Subsequence最长连续递增序列

    给定一个未经排序的整数数组,找到最长且连续的的递增序列. 示例 1: 输入: [1,3,5,4,7] 输出: 3 解释: 最长连续递增序列是 [1,3,5], 长度为3. 尽管 [1,3,5,7] 也 ...

  4. LeetCode 最长连续递增序列

    给定一个未经排序的整数数组,找到最长且连续的的递增序列. 示例 1: 输入: [1,3,5,4,7] 输出: 3 解释: 最长连续递增序列是 [1,3,5], 长度为3. 尽管 [1,3,5,7] 也 ...

  5. 【LeetCode动态规划#14】子序列系列题(最长递增子序列、最长连续递增序列、最长重复子数组、最长公共子序列)

    最长递增子序列 力扣题目链接(opens new window) 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度. 子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其 ...

  6. LeetCode 674. Longest Continuous Increasing Subsequence (最长连续递增序列)

    Given an unsorted array of integers, find the length of longest continuous increasing subsequence. E ...

  7. [LeetCode] Longest Continuous Increasing Subsequence 最长连续递增序列

    Given an unsorted array of integers, find the length of longest continuous increasing subsequence. E ...

  8. [LeetCode] 674. Longest Continuous Increasing Subsequence 最长连续递增序列

    Given an unsorted array of integers, find the length of longest continuous increasing subsequence. E ...

  9. leetcode 674. 最长连续递增序列

    1. 题目 给定一个未经排序的整数数组,找到最长且连续的的递增序列. 示例 1: 输入: [1,3,5,4,7] 输出: 3 解释: 最长连续递增序列是 [1,3,5], 长度为3. 尽管 [1,3, ...

  10. LeetCode 674. 最长连续递增序列(Longest Continuous Increasing Subsequence) 18

    674. 最长连续递增序列 674. Longest Continuous Increasing Subsequence 题目描述 给定一个未经排序的整型数组,找到最长且连续的递增序列. Given ...

随机推荐

  1. 免费领 | 2000件“直击灵魂”的Polo衫,创龙科技10周年献礼!

          一件"有灵魂"的Polo衫 时光荏苒,创龙科技即将迎来10周年庆!为感谢各位客户多年的支持与信任,创龙科技特推出10周年献礼活动--2000件"直击灵魂&qu ...

  2. 基于OMAPL138+FPGA核心板——MCSDK开发入门(下)

    本文测试板卡为创龙科技 SOM-TL138F 是一款基于 TI OMAP-L138(定点/浮点 DSP C674x + ARM9)+ 紫光同创 Logos/Xilinx Spartan-6 低功耗 F ...

  3. [oeasy]python0135_命名惯用法_name_convention

    命名惯用法 回忆上次内容 上次 了解了isidentifier的细节 关于 关键字 关于 下划线   如何查询 变量所指向的地址? id   如何查询 已有的各种变量? locals   如果 用一个 ...

  4. [oeasy]python0135_变量名与下划线_dunder_声明与赋值

    变量定义 回忆上次内容 变量 就是 能变的量 上次研究了 变量标识符的 规则 第一个字符 应该是 字母或下划线 合法的标识符可以包括 大小写字母 数字 下划线     还研究了字符串(str)的函数 ...

  5. 【JavaScript高级01】JavaScript基础深入

    1,数据类型 JavaScript将数据分为六大类型,分别为数值类型(number).字符串类型(string).布尔类型(boolean).undefined(定义未赋值).null(赋值为空值). ...

  6. Java maven构建命令使用总结

    实践环境 Apache Maven 3.0.5 (Red Hat 3.0.5-17) maven构建生命周期 学习Maven构建命令之前,我们不烦先简单了解下Maven构建生命周期. Maven基于构 ...

  7. OLOR:已开源,向预训练权值对齐的强正则化方法 | AAAI 2024

    随着预训练视觉模型的兴起,目前流行的视觉微调方法是完全微调.由于微调只专注于拟合下游训练集,因此存在知识遗忘的问题.论文提出了基于权值回滚的微调方法OLOR(One step Learning, On ...

  8. vue项目中实现sql编辑器功能自定义高亮词汇可提示关键词-codemirror

    先上图:左侧是数据库表,右侧上部是sql编辑器,下部是执行sql的返回接口 HTML: <el-row> <el-col :span="4" class=&quo ...

  9. mybatis关于大于小于:元素内容必须由格式正确的字符数据或标记组成。

    首先是原因: mybatis中< >这两个符号会被识别为标签的开始和结束,用了就会报解析的错误 会报错类似下面这些 1.元素内容必须由格式正确的字符数据或标记组成. 2.Error cre ...

  10. ORA-01658创建表或索引报错分析

    一.报错信息 某项目最近在 SQL Loader 导数据时偶尔会报错,类似如下: SQL loader ORA-01658 unable to creale INITIAL extent for se ...