[leetCode]剑指 Offer 61. 扑克牌中的顺子
解法
class Solution {
public boolean isStraight(int[] nums) {
if (nums == null || nums.length == 0 ) return false;
// 1.将数组排序
Arrays.sort(nums);
// "0" (大小王)的个数
int numberOfZero = 0;
// 缺失数字的个数
int numberOfGap = 0;
// 2. 统计 “0” 的个数
for (int i = 0; i < nums.length && nums[i] == 0; i++)
++numberOfZero;
// 3.统计缺失数字的个数
int small = numberOfZero;
int big = small + 1;
while(big < nums.length) {
// 出现了“对子”,不可能有顺子
if (nums[small] == nums[big])
return false;
numberOfGap += nums[big] - nums[small] - 1;
small = big;
++big;
}
// 缺失的数字个数比大小王个数多则无法构成顺子
return (numberOfGap > numberOfZero) ? false : true;
}
}