剑指 Offer 第61题:扑克牌中的顺子
2022-08-15 本文已影响0人
放开那个BUG
1、前言
题目描述
2、思路
检查是否是顺子: 首先应该进行排序,然后统计 0 的个数, 最后统计相邻数字之间的间隔个数。 如果0 的次数 大于等于 间隔的次数,则是顺子,否则不是顺子。另外,如果出现非0外的相同的数,即对子,则不是顺子。 如:{0,1,3,4,5} 中 0 的个数为 1, 间隔个数为 1,则是顺子; {0,1,3,4,6}中 0 的
3、代码
class Solution {
public boolean isStraight(int[] nums) {
if(nums == null || nums.length == 0){
return false;
}
int any = 0, sum = 0;
Arrays.sort(nums);
for(int i = 0; i < nums.length - 1; i++){
if(nums[i] == 0){
any++;
continue;
}
if(nums[i] == nums[i + 1]){
return false;
}
sum += nums[i + 1] - nums[i] - 1;
}
return any >= sum;
}
}