题解 | #扑克牌顺子#

扑克牌顺子

http://www.nowcoder.com/practice/762836f4d43d43ca9deb273b3de8e1f4

function IsContinuous(numbers)
{
    // write code here
    //首先判断除了0有没有重复的数字,如果重复直接返回false,否则继续执行代码;先剔除0,然后再判断
    let judArr = numbers.filter(item =>item != 0)
    judArr=judArr.sort()
    for(let i =0;i<judArr.length;i++){
       if(judArr[i] ==judArr[i+1]){return false}
    }
    
    //计算0的个数
    let num = 0;
    let index = numbers.indexOf(0);
    while(index != -1){
        num++
        index = numbers.indexOf(0,index+1)
    }
    
     //如果4个0,直接返回真
    if(num == 4 ){
            return true
    }
   
    // 如果没有0,将数组先sort排序,直接看最后一项减第一项的值是否等于数组长度。
    if (num == 0){
    let arr=numbers.sort() 
    let len = arr.length
    return arr[len-1]-arr[0] ==len-1?true:false
    }
    
    //如果有一个0,将数组sort排序,最后一项减第二项的值是否小于数组长度。
    if (num == 1){
    let arr=numbers.sort() 
    let len = arr.length
    return arr[len-1]-arr[1] <len?true:false
    }
    
    //如果有两个0,将数组sort排序,最后一项减第三项的值小于数组长度。
    if (num == 2){
    let arr=numbers.sort() 
    let len = arr.length
    return arr[len-1]-arr[2] <len?true:false
    }
    
    //如果有三个0,将数组先sort排序,直接看最后一项减第四项的值是否小于数组长度。
    if (num == 3){
    let arr=numbers.sort() 
    let len = arr.length
    return arr[len-1]-arr[3] <len?true:false
    }
    
} 

module.exports = {
    IsContinuous : IsContinuous
};
全部评论
可以看下我的最新题解,不需要做复杂的判断
点赞 回复 分享
发布于 2022-03-16 00:30

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务