最长连续递增序列使用JavaScript解题

简介: 最长连续递增序列使用JavaScript解题

最长连续递增序列


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

连续递增的子序列 可以由两个下标 lrl < 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。


解题思路


为了得到最长连续递增序列,可以使用贪心的策略得到尽可能长的连续递增序列。做法是使用记录当前连续递增序列的开始下标和结束下标,遍历数组的过程中每次比较相邻元素,根据相邻元素的大小关系决定是否需要更新连续递增序列的开始下标。

具体而言,令 start 表示连续递增序列的开始下标,初始时 start=0,然后遍历数组 nums,进行如下操作。

  • 如果下标 i>0且 nums[i]≤nums[i−1],则说明当前元素小于或等于上一个元素,因此 nums[i−1] 和 nums[i] 不可能属于同一个连续递增序列,必须从下标 i 处开始一个新的连续递增序列,因此令 start=i。如果下标 i=0或 nums[i]>nums[i−1],则不更新 start 的值。
  • 此时下标范围 [start,i]的连续子序列是递增序列,其长度为 i−start+1,使用当前连续递增序列的长度更新最长连续递增序列的长度。
var findLengthOfLCIS = function(nums) {
    let ans = 0;
    const n = nums.length;
    let start = 0;
    for (let i = 0; i < n; i++) {
        if (i > 0 && nums[i] <= nums[i - 1]) {
            start = i;
        }
        ans = Math.max(ans, i - start + 1);
    }
    return ans;
};


目录
相关文章
|
机器学习/深度学习 JavaScript 前端开发
LeetCode 51.N皇后(JavaScript 解题)
LeetCode 51.N皇后(JavaScript 解题)
67 0
|
4月前
|
JavaScript 前端开发
JavaScript写的序列代码生成器
JavaScript写的序列代码生成器
|
6月前
|
JavaScript 前端开发 算法
前端 JS 经典:最长递增子序列
前端 JS 经典:最长递增子序列
64 2
|
7月前
|
存储 JavaScript 前端开发
JavaScript中的数组是核心数据结构,用于存储和操作序列数据
【6月更文挑战第22天】JavaScript中的数组是核心数据结构,用于存储和操作序列数据。创建数组可以使用字面量`[]`或`new Array()`。访问元素通过索引,如`myArray[0]`,修改同样如此。常见方法包括:`push()`添加元素至末尾,`pop()`移除末尾元素,`shift()`移除首元素,`unshift()`添加到开头,`join()`连接为字符串,`slice()`提取子数组,`splice()`进行删除、替换,`indexOf()`查找元素位置,`sort()`排序数组。还有其他如`reverse()`、`concat()`等方法。
139 2
|
8月前
|
JavaScript 前端开发
剑指 Offer 31. 栈的压入、弹出序列 (javascript实现)
剑指 Offer 31. 栈的压入、弹出序列 (javascript实现)
|
8月前
|
算法 JavaScript
JS算法-最长连续序列
JS算法-最长连续序列
|
JavaScript 前端开发 算法
LeetCode 37.解数独(注释完整+JavaScript解题)
LeetCode 37.解数独(注释完整+JavaScript解题)
94 0
|
JavaScript 前端开发 程序员
六个 JavaScript 中有效的转义序列
六个 JavaScript 中有效的转义序列
108 0
|
前端开发 算法 JavaScript
LeetCode寻找峰值使用JavaScript解题|前端学算法
LeetCode寻找峰值使用JavaScript解题|前端学算法
145 0
LeetCode寻找峰值使用JavaScript解题|前端学算法
|
前端开发 算法 JavaScript
LeetCode合并两个有序链表使用JavaScript解题|前端学算法
LeetCode合并两个有序链表使用JavaScript解题|前端学算法
130 0
LeetCode合并两个有序链表使用JavaScript解题|前端学算法