title: 最长连续序列
date: 2022-04-22 11:33:47
tags: 每天进步一点点系列
题目
题目:最长连续序列
难度:中等
题解:先排下序,用个一维dp数组,dp[n]记录长度,最后求出最大的dp值就行了,数组长度为0的先处理下就行了,注意点就是返回值默认值为1,先给dp数组都初始化为1,因为最小的连续长度肯定是包含自身也就是1
代码:
class Solution {
public int longestConsecutive(int[] nums) {
if(nums.length==0){
return 0;
}
//排序下
Arrays.sort(nums);
//max初始化为1,因为最小的连续序列长度为1,避免数组中只有一个元素的情况,也可以在上面写if提前过滤
int max = 1;
int[] dp = new int[nums.length];
//先填充个初始长度,包括本身,也就是1
Arrays.fill(dp,1);
for(int i=1;i<nums.length;i++){
//比前一个大,那么就是连续的
if(nums[i]==nums[i-1]+1){
dp[i] = dp[i-1] + 1;
}
//和前一个相等,连续长度保持就行
if(nums[i]==nums[i-1]){
dp[i] = dp[i-1];
}
max = Math.max(max,dp[i]);
}
return max;
}
}