给定无序数组arr,返回其中最长的连续序列的长度(值连续,位置无需连续)
题目链接
题目思路:
1、对数组元素进行排序
2、设置两个变量max和maxFinal,max记录当前序列最大连续长度,maxFinal记录最终的所有序列中最大连续长度。
3、如果前一个元素取值等于后一个元素取值-1,则最大连续长度max++,如果前一个元素取值小于后一个元素,则重新开始计算最大连续长度max。每一次循环后判断max和maxFinal的大小,如果max>maxFinal,则将max赋值给maxFinal。
代码:
class Solution {
public:
/**
* max increasing subsequence
* @param arr int整型vector the array
* @return int整型
*/
int MLS(vector<int>& arr) {
// write code here
int max = 1;
sort(arr.begin(),arr.end());
int pre = arr[0];
int maxFinal = 1;
for(int i=0;i<arr.size();i++){
if(pre == arr[i]-1){
pre = arr[i];
max++;
}else if(pre < arr[i]-1){
pre = arr[i];
max = 1;
}
if(max>maxFinal)
maxFinal = max;
}
return maxFinal;
}
};
367

被折叠的 条评论
为什么被折叠?



