继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

leetcode终于有个fighting了

甜酒0917
关注TA
已关注
手记 13
粉丝 2
获赞 23
/**
 * @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,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP