力扣数组674号题

674. 最长连续递增序列

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

示例 1:

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

示例 2:

输入: [2,2,2,2,2]
输出: 1
解释: 最长连续递增序列是 [2], 长度为1。

注意:数组长度不会超过10000。

解题思路:

该题主要定义了count 和 maxcount 两个变量。count 表示其中一个递增序列的长度,maxcount 表示所有递增序列中长度最长的

序列的长度,输入 count = 1 ;maxcount = 0;首先如果数组的长度为0,那么就输出0.  如果数组长度大于0,则从第2个数开始

遍历,如果nums[i]<=nums[i-1],一组递增序列找完,就令maxcount 等于 count 和 maxcount 中大的那个count=0;否则

count++;若整个数组都遍历完了也没有出现nums[i]<=nums[i-1],就令maxcount 等于 count 和 maxcount 中大的那个

  1maxcount=count.

代码如下:

class Solution {
    public int findLengthOfLCIS(int[] nums) {
        int count=1;                //计数,其中一个序列的长度
        int maxcount=0;             //最长递增序列的长度
        //int temp=0;
        if(nums.length==0){         //如果数组的长度为0,则返回
            return maxcount;
        }
        for(int i=1;i<nums.length;i++){
            if(nums[i]<=nums[i-1]){ //如果后面的数比前面小,说明一个序列结束,maxcount等于上一                     
            //个序列与刚结束序列中长的更长的那个
                maxcount=Math.max(count,maxcount);
                count=0;            //一个序列结束,count变为0,新序列开始
            }
            count++;                //如果后面的数比前面大,说明一个序列还未结束,长度加1
        }
        maxcount=Math.max(count,maxcount);//如果还数组从头到尾一直增,未出现nums[i]<=nums[i-1]的情况,
        //令maxcount=Math.max(count,maxcount),即maxcount=Math.max(count,0),此时count等于i<nums.length
        return maxcount;
    }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值