题目描述
从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是否是连续的。2-10为数字本身,A看作1,J为11,Q为12,K为13。大王小王可以看成任意数字,输入 0 表示大王小王。
题解:
先给数组排序
统计数组中0的个数,和数组中相邻数组之间的空缺数,中间如果相邻数字相等,直接返回false。
如果 0 的个数大于等于空缺的总数,那么这个数组就是连续的,反之则不连续。
import java.util.Arrays;
public class Solution {
public boolean isContinuous(int[] numbers) {
if (numbers.length < 5) {
return false;
}
Arrays.sort(numbers);
int countW = 0;//记录王的数量
int countG = 0;//记录空隙的数量
for (int i = 0; i < numbers.length - 1; i++) {
if (numbers[i] == 0) {// 是王
countW++;
} else {
if (numbers[i + 1] - numbers[i] > 1) {// 不连续
countG += numbers[i + 1] - numbers[i] - 1;
} else if (numbers[i + 1] == numbers[i]) {// 出现重复的,且不是王
return false;
}
}
}
if (countW >= countG) {
return true;
} else {
return false;
}
}
}