问题分解
1:要求
要求找到最长的连续递增子序列,即在原数组中位置连续且数值严格递增的一段序列
2:输入和输出
输入是一个未经排序的整数数组nums
输出是该数组中最长连续递增子序列的长度
3:边界调节
数组为空则长度为0
数组只包含一个元素,长度为1
4:设计算法
使用两个变量:
currentLength当前子序列的长度
maxLength目前为止最大
从数组第一个元素开始遍历,直到倒数第二个元素(因为比较当前和下一个元素,最后一个元素还和谁比)
对于每个元素,如果小于后面元素,则是递增的,则增加currentLength,同时更新两者中最大的
如果不是递增的,则重置currentLength,因为要求连续!!!
循环结束再检查maxLength,确保最后一个递增序列也被考虑
因为当数组以一个递增序列结束时,我们最后一个元素是没有进行比较的,maxLength没有得到更新
比如[1,2,3,4]数组
class Solution {
public int findLengthOfLCIS(int[] nums) {
if(nums == null || nums.length == 0 ){
return 0;
}
int currentLength = 1;
int maxLength = 1;
for(int i = 0;i<nums.length - 1;i++){
if(nums[i] < nums[i + 1]){
currentLength++;
maxLength = Math.max(maxLength,currentLength);
}else{
currentLength = 1;
}
}
return maxLength;
}
}