首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Leetcode:最长连续递增序列

Leetcode:最长连续递增序列

作者头像
Liusy
发布于 2021-02-01 11:01:12
发布于 2021-02-01 11:01:12
1.3K0
举报
文章被收录于专栏:Liusy01Liusy01

题目:

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

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

示例:

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

提示:

代码语言:javascript
复制
0 <= nums.length <= 104
-109 <= nums[i] <= 109

解题:

思路:

暴力求解,用一个变量start记录起始下标,直接从1开始遍历数组

如果当前元素<=前一个元素,更改start为当前下标,对于result和当前元素减去start取最大值

为了确保数组是连续递增的情况下依然可以求解,所以后面还得取两者最大值

我的解答:

代码语言:javascript
复制
class Solution {
    public int findLengthOfLCIS(int[] nums) {
        int result = 0;
        int start = 0;
        for (int i = 1; i < nums.length; i++) {
            if (nums[i]<=nums[i-1]) {
                result =  i-start > result ? i-start : result ;
                start = i;
            }
        }
        result =  nums.length-start > result ? nums.length-start : result ;

        return result;
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-24,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 题目:
    • 示例:
    • 提示:
  • 解题:
    • 思路:
    • 我的解答:
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档