JZ61 扑克牌顺子qaq

89 阅读1分钟

image.png

image.png

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param numbers int整型一维数组
 * @return bool布尔型
 */
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,
};

扑克牌顺子_牛客题霸_牛客网 (nowcoder.com)