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;
}
}