请从输入的一个数组中判断能否构成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; } }