扑克牌的顺子-61
从扑克牌中随机抽5张牌,判断是不是一个顺子,即这 5 张牌是不是连续的。
2~10为数字本身,A为1,J为11,Q为12,K 为 13,大小王可以看做任意数字。
为了方便,大小王均以 0 来表示,并且假设这副牌中大小王均有两张。
样例1
输入:[8,9,10,11,12]
输出:true
样例2
输入:[0,8,9,11,12]
输出:true
思路:
排序后记录 0 出现的个数。然后遍历得出间隙数之和。然后比较 0 和间隙的个数,大于则能组成。
class Solution {
public boolean isContinuous(int[] numbers) {
if (numbers.length < 5) return false;
Arrays.sort(numbers);
int count0 = 0, gap = 0;
for (int num : numbers) {
if (num == 0) count0++;
}
int low = count0, high = low + 1;
while (high < numbers.length) {
if (numbers[low] == numbers[high]) return false;
gap += numbers[high] - numbers[low] - 1; // 统计间隙数
low++;
high++;
}
return count0 >= gap;
}
}
701

被折叠的 条评论
为什么被折叠?



