思路
- 大小王可以当任意数字使用
- 顺子中的牌不能有重复
- 数组中的最大值和最小值差值不能 > 5(一共就五张牌)
只要满足以上3个条件即可构成顺子
这里有个小疑问,不知道打牌规则里的 13 ,1,2,3,4 能不能构成顺子?🤔️
class Solution {
public boolean isStraight(int[] nums) {
Arrays.sort(nums);// 排序用于判断重复性,用map和set都可以
// 大小王的数目
int z = 0;
// 顺子应该是最小值~最小值+4 最小值为1,最大值必须为5之内,可以是2,大小王可以补数字
// 顺子中不能有重复牌,存在重复表示非顺子
int min = 13;
int max = 0;
for (int i = 0 ; i < nums.length; i++) {
if(nums[i] == 0) z++;
if(nums[i] != 0) min = Math.min(nums[i],min);
max = Math.max(nums[i],max);
// 除了大小王,不能有重复牌
if (i < nums.length - 1) {
if (nums[i] != 0 &&nums[i] == nums[i+1]) return false;
}
}
return max - min <= 4;
}
}
Q.E.D.