描述
给定无序数组arr,返回其中最长的连续序列的长度(要求值连续,位置可以不连续,例如 3,4,5,6为连续的自然数)
要求:空间复杂度 O(n)O(n),时间复杂度 O(nlogn)O(nlogn)
分析
解法很简单,就是要理解题目的意思。
题目的意思是找出几个数是一个挨一个的递增,这样递增最长能有多长。
注意要去重,防止重复的数阻断计算连续的长度。
import java.util.*;
public class Solution {
public int MLS (int[] arr) {
if(arr.length == 1){
return 1;
}
Arrays.sort(arr);
int ans = 1;
int tmp = 1;
for(int i = 1; i < arr.length; i++){
if(arr[i] == arr[i-1]){
continue;
}
if(arr[i] - arr[i-1] == 1){
tmp++;
}else{
tmp = 1;
}
ans = Math.max(ans,tmp);
}
return ans;
}
}