描述
给定无序数组arr,返回其中最长的连续序列的长度(要求值连续,位置可以不连续,例如 3,4,5,6为连续的自然数)
示例1
输入:
[100,4,200,1,3,2]
返回值:
4
示例2
输入:
[1,1,1]
返回值:
1
这道题可以用并查集,但是没必要,这里用先排序,再看arr[i - 1] == arr[i] - 1 ?
代码:
/**
* max increasing subsequence
* @param arr int整型一维数组 the array
* @return int整型
*/
public int MLS (int[] arr) {
// write code here
int len = arr.length;
if(len == 0 || len == 1){
return len;
}
Arrays.sort(arr);
int max = 1;
int curr = 1;
for(int i = 1; i < len; i++){
if(arr[i] == (arr[i -1] + 1)){
curr += 1;
}else if(arr[i] == arr[i - 1]){
continue;
}else{
max = Math.max(curr, max);
curr = 1;
}
}
max = Math.max(curr, max);
return max;
}