请从输入的一个数组中判断能否构成5个一连的顺子,输入的数范围为0-13的整数,其中0可以表示1~13的任意整数。若能构成顺子,返回true,否则返回false。
链接:https://www.nowcoder.com/questionTerminal/762836f4d43d43ca9deb273b3de8e1f4?f=discussion
来源:牛客网

import java.util.Arrays;
public class Solution {
    public boolean isContinuous(int[] numbers) {
        int numOfZero = 0;
        int numOfInterval = 0;
        int length = numbers.length;
        if(length == 0){
           return false;
        }
        Arrays.sort(numbers);
        for (int i = 0; i < length - 1; i++) {
            // 计算癞子数量
            if (numbers[i] == 0) {
                numOfZero++;
                continue;
            }
            // 对子,直接返回
            if (numbers[i] == numbers[i + 1]) {
                return false;
            }
//这个计算2个数字之间的差值(这个差值是指的完成顺子) 例如 2 和 3满足顺子,相减结果为1,所以要减去1,结果为0, 
//例如2 和 4,要满足顺子,中间必须加上一个3,也就是需要加上一个数,所以4-2-1-=1
            numOfInterval += numbers[i + 1] - numbers[i] - 1;
        }
        if (numOfZero >= numOfInterval) {
            return true;
        }
        return false;
    }
}