0
点赞
收藏
分享

微信扫一扫

3590、最长连续递增序列

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


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


提示:


1 <= nums.length <= 104

-109 <= nums[i] <= 109


链接:https://leetcode-cn.com/problems/longest-continuous-increasing-subsequence

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

package cn.fansunion.leecode.array.max;

/**

* 674. 最长连续递增序列 <br/>

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

*

* 连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,<br/>

* 如果对于每个 l <= i < r,都有 nums[i] < nums[i + 1] ,<br/>

* 那么子序列 [nums[l], nums[l + 1], ..., nums[r - 1], nums[r]] 就是连续递增子序列。

*

* 来源:力扣(LeetCode) 链接:力扣

* 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

*

* @author wen.lei@brgroup.com

*

* 2022-3-9

*/

public class LongestContinuousIncreasingSubsequence {

/* 示例 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。





提示:



1 <= nums.length <= 104

-109 <= nums[i] <= 109*/

/**

* 和这个题MonotonicArray类似,同MaxConsecutiveOnes代码结构一致

*

* @param nums

* @return

*/

public int findLengthOfLCIS(int[] nums) {

int prev = nums[0];

int maxLength = 0;

int curLength = 1;

// 升序时,当前的 不应该比 前面的小

for (int index=1;index< nums.length;index++) {

int cur = nums[index];

//升序,可能一直不中断

if (cur > prev) {

curLength++;

} else {

//升序,中断了

maxLength=Math.max(curLength, maxLength);

curLength=1;

}

prev = cur;

}

return Math.max(curLength, maxLength);

}

}

package test.leecode.array;

import org.junit.Assert;

import org.junit.Test;

import cn.fansunion.leecode.array.max.LongestContinuousIncreasingSubsequence;

/**

* @author wen.lei@brgroup.com

*

* 2022-2-25

*/

public class LongestContinuousIncreasingSubsequenceTest {

@Test

public void test() {

LongestContinuousIncreasingSubsequence test = new LongestContinuousIncreasingSubsequence();

Assert.assertEquals(3, test.findLengthOfLCIS(new int[] {1,3,5,4,7}));

Assert.assertEquals(1, test.findLengthOfLCIS(new int[] {1,1,1,1}));

Assert.assertEquals(2, test.findLengthOfLCIS(new int[] {1,3,2,4,3}));

Assert.assertEquals(5, test.findLengthOfLCIS(new int[] {1,3,5,4,7,8,9,10}));

Assert.assertEquals(6, test.findLengthOfLCIS(new int[] {1,2,3,5,9,10}));

}

}

举报

相关推荐

0 条评论