最长连续递增序列

最长连续递增序列

描述 :

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

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

题目 :

LeetCode 674.最长连续递增序列 :

674. 最长连续递增序列

最长连续递增序列_第1张图片

分析 :

为了方便演示,我们给个示例(1,3,5,4,7,8,9,2),则图示如下,题目要求找到最长的连续递增子序列。

最长连续递增序列_第2张图片

可以看到,最长递增子序列为{4,7,8,9)所以应该返回 4。所以在遍历的时候,我们可以从第 2 个元素开始先定义[left,right]的区间来表示当前的递增区间,执行如下操作:

  • 如果当前遍历到的元素比它左边的那一个元素要严格大,right就增加
  • 否则就将left跳到right的起始位置,重新开始计算

解析 :

class Solution {
    public int findLengthOfLCIS(int[] nums) {
        int left = 0;
        int right = 0;
        int res = 0;
        while(right < nums.length){
            if(right > 0 && nums[right-1]>=nums[right]){
                left = right;
            }
            right++;
            res = Math.max(res,right-left);
        }
        return res;
    }
}

这期就到这里 , 下期见!

你可能感兴趣的:(算法,java,数据结构,leetcode,开发语言)