/**
* @param {number[]} nums
* @return {number}
*/
var longestConsecutive = function(nums) {
//分别存负 0 正
var aryA=[];
var aryB=[];
var aryC=[];
for(var i=0;i<nums.length;i++){
if(nums[i]==0){
aryB[0]=1;
}else if(nums[i]>0){
aryC[nums[i]]=1;
}else{
aryA[Math.abs(nums[i])]=1;
}
}
function getMax(ary){
var temp;
var max=0;
var count=0;
for(var i in ary){
if(temp==undefined){
temp=i;
count=1;
}else{
if(i==(+temp+1)){
count++;
}else{
count=1;
}
temp=i;
}
max=Math.max(max,count);
}
return max;
}
function getMaxALL(ary1,ary2){
var i=1;
var j=1;
while(ary1[i]){
i++;
}
while(ary2[j]){
j++;
}
return i+j-2;
}
var maxA=getMax(aryA);
var maxB=getMax(aryB);
var maxC=getMax(aryC);
var maxAll;
if(maxB==0){
return Math.max(maxA,maxC);
}else{
maxAll=getMaxALL(aryA,aryC)+1;
return Math.max(maxA,maxB,maxC,maxAll);
}
};
打开App,阅读手记