原题链接:https://leetcode-cn.com/problems/longest-continuous-increasing-subsequence/
给定一个未经排序的整数数组,找到最长且连续的的递增序列。
示例 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。
输出当前最长连续递增序列的长度
class Solution674 {
public int findLengthOfLCIS(int[] nums) {
if(nums.length==0||nums.length==1){
// 0指有数组,没空间 || 1指有数组,有空间,但里面只有一个元素
return nums.length; //不需要再找了
}
int maxCount=1; //最大连续次数
int count=1; //count代表当前连续次数
for(int i=0;i<nums.length-1;i++){
if(nums[i+1]>nums[i]){
count++;
}else{
count=1; //如果出现右边小于左边的,则count=1,即当前连续变为1
}
maxCount=count>maxCount?count:maxCount;
}
return maxCount;
}
}
输出当前最长连续递增序列
class Solution674 {
public int findLengthOfLCIS(int[] nums) {
if(nums.length==0||nums.length==1){
// 0指有数组,没空间 || 1指有数组,有空间,但里面只有一个元素
return nums.length; //不需要再找了
}
int maxL=0;
int maxR=0;
int l=0;
int r=0;
int maxCount=1; //最大连续次数
int count=1; //count代表当前连续次数
for(int i=0;i<nums.length-1;i++){
if(nums[i+1]>nums[i]){
count++;
r=i+1;
}else{
count=1; //如果出现右边小于左边的,则count=1,即当前连续变为1
l=i+1;
r=i+1;
}
if(count>maxCount){
maxCount=count;//如果当前连续大于最大连续,则把count赋值给maxCount
maxL=l; //一旦maxCount更新,maxL和maxR则更新。
maxR=r;
}
}
System.out.println(maxL+"~"+maxR);//输出当前最长连续递增序列
return maxCount;
}
}