271最长连续递增序列

Posted huoyingfans

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了271最长连续递增序列相关的知识,希望对你有一定的参考价值。

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

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

来源:力扣(LeetCode)

链接: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));

    

以上是关于271最长连续递增序列的主要内容,如果未能解决你的问题,请参考以下文章

271最长连续递增序列

674. 最长连续递增序列

LeetCode - 最长连续递增序列

Leetcode 674.最长递增序列

单增最长子序列

动态规划题目记录