线性dp:LeetCode674. 最长连续递增序列
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
动态规划思路讲解:
- 这道题与[最长递增子序列](LeetCode300.最长递增子序列 - Tomorrowland_D - 博客园 (cnblogs.com))的区别就是,最长递增子序列是可以不连续的,而最长连续递增序列必须要是连续的。
- 我们这道题仍然可以采用dp[i]的思想,而这里的dp[i]与最长递增子序列的dp[i]就差不多了,但不是完全一致
状态变量及其含义
- 我们可以设置状态变量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. 最长连续递增序列的更多相关文章
- [Swift]LeetCode674. 最长连续递增序列 | Longest Continuous Increasing Subsequence
Given an unsorted array of integers, find the length of longest continuous increasing subsequence (s ...
- LeetCode674. 最长连续递增序列
原题链接 1 class Solution: 2 def findLengthOfLCIS(self, nums: List[int]) -> int: 3 ans = begin = 0 4 ...
- Leetcode674.Longest Continuous Increasing Subsequence最长连续递增序列
给定一个未经排序的整数数组,找到最长且连续的的递增序列. 示例 1: 输入: [1,3,5,4,7] 输出: 3 解释: 最长连续递增序列是 [1,3,5], 长度为3. 尽管 [1,3,5,7] 也 ...
- LeetCode 最长连续递增序列
给定一个未经排序的整数数组,找到最长且连续的的递增序列. 示例 1: 输入: [1,3,5,4,7] 输出: 3 解释: 最长连续递增序列是 [1,3,5], 长度为3. 尽管 [1,3,5,7] 也 ...
- 【LeetCode动态规划#14】子序列系列题(最长递增子序列、最长连续递增序列、最长重复子数组、最长公共子序列)
最长递增子序列 力扣题目链接(opens new window) 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度. 子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其 ...
- LeetCode 674. Longest Continuous Increasing Subsequence (最长连续递增序列)
Given an unsorted array of integers, find the length of longest continuous increasing subsequence. E ...
- [LeetCode] Longest Continuous Increasing Subsequence 最长连续递增序列
Given an unsorted array of integers, find the length of longest continuous increasing subsequence. E ...
- [LeetCode] 674. Longest Continuous Increasing Subsequence 最长连续递增序列
Given an unsorted array of integers, find the length of longest continuous increasing subsequence. E ...
- leetcode 674. 最长连续递增序列
1. 题目 给定一个未经排序的整数数组,找到最长且连续的的递增序列. 示例 1: 输入: [1,3,5,4,7] 输出: 3 解释: 最长连续递增序列是 [1,3,5], 长度为3. 尽管 [1,3, ...
- LeetCode 674. 最长连续递增序列(Longest Continuous Increasing Subsequence) 18
674. 最长连续递增序列 674. Longest Continuous Increasing Subsequence 题目描述 给定一个未经排序的整型数组,找到最长且连续的递增序列. Given ...
随机推荐
- 张高兴的 MicroPython 入门指南:(一)环境配置、Blink、部署
目录 什么是 MicroPython 环境配置 硬件部分 软件部分 Hello World! Blink Pico 的引脚 常见电子元件 面包板 跳线 开关 发光二极管 电阻 使你的 Pico 闪烁 ...
- P2935
[USACO09JAN]Best Spot S 题目 约翰拥有P(1<=P<=500)个牧场.贝茜特别喜欢其中的F个.所有的牧场 由C(1 < C<=8000)条双向路连接,第 ...
- 安装phpgjx工具
直接按照phpgjx配置文件进行安装. 重启mysql和访问phpgjx都会生成配置的日志文件 按照文档安装可能日志文件中不会产生SQL记录 解决方案: 可以进入mysql后,查看该日志是否开启 / ...
- 安装PHP拓展
win环境下: php扩展下载地址:http://pecl.php.net/ 需要知道: php版本,操作系统位数,线程是否安全.想要知道这3个,在php中输入.如下图所示:phpinfo();di ...
- 2024-07-17:用go语言,给定一个整数数组nums, 我们可以重复执行以下操作: 选择数组中的前两个元素并删除它们, 每次操作得到的分数是被删除元素的和。 在保持所有操作的分数相同的前提下,
2024-07-17:用go语言,给定一个整数数组nums, 我们可以重复执行以下操作: 选择数组中的前两个元素并删除它们, 每次操作得到的分数是被删除元素的和. 在保持所有操作的分数相同的前提下, ...
- [BJDCTF2020]Mark loves cat(源码泄露+命令执行)
扫描之后发现是/.git源码泄露 python GitHack.py http://56ad87c1-d8fb-463d-9480-f0fbee5176a0.node5.buuoj.cn:81/.gi ...
- P10244 String Minimization 题解
P10244 String Minimization 题意 给你四个长度为 \(n\) 的字符串,分别是 \(abcd\). 你可以选择一个 \(i\) 然后交换 \(a[i]\) 和 \(c[i]\ ...
- bloom效果
搜索 复制
- 【VMware VCF】VMware Cloud Foundation Part 05:部署 SDDC 管理域。
之前文章("VMware Cloud Foundation Part 03:准备 Excel 参数表."和"VMware Cloud Foundation Part 04 ...
- 2023/4/15 SCRUM个人博客
1.我昨天的任务 获得了人脸识别作弊检测和绘制界面的分工,准备先从作弊检测入手 2.遇到了什么困难 对作弊检测的组件不熟悉,进展缓慢,需要进行对点的学习 3.我今天的任务 初步学习cython