Leetcode674. 最长连续递增序列
程序员文章站
2024-02-25 09:45:40
...
Leetcode674. 最长连续递增序列
给定一个未经排序的整数数组,找到最长且连续的的递增序列。
示例 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。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-continuous-increasing-subsequence
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
分析:
在这个题中,分析到找最长连续递增的序列,也就是找到所有的连续递增的序列,然后对比找出最长的即可。所以需要两个变量 一个count存储当前的连续数的个数,另一个maxcount 存储最大连续序列的个数,每次找到 count 和 maxcount 比较,将最大的存入 maxcount 中,最终返回count即可.
代码实现:
public class Leetcode674 {
public static void main(String[] args){
int[] nums={1,3,5,4,7};
System.out.println(findLengthOfLCIS(nums));
}
public static int findLengthOfLCIS(int[] nums) {
if(nums.length==1 || nums==null){ //判断空数组和数组长度为1 的时候
return 0;
}
int count=0; //计连续的个数
int n=nums[0]; //当前的数字
int maxcount=0; //最大连续个数
for(int i=0;i<nums.length;i++){
if(nums[i]<=n){ //如果小于当前的数组则表示不连续递增了
maxcount=Math.max(maxcount,count); //将当前连续个数和最大连续个数对比,返回最大的
count=1; //进行下一个连续序列判断时,将count重置为1
}else{
count++; //如果大于,count+1
}
n=nums[i]; //将已判断的数赋给n
}
return maxcount;
}
}
下一篇: php算法题—无重复字符的最长子串