手记

leetcode终于有个fighting了

/**
 * @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);
    }

};
0人推荐
随时随地看视频
慕课网APP