Open songyy5517 opened 1 year ago
思路:排序 & 遍历 顺子的充要条件:无重复 & 除大小王外的最大牌值差小于5。
复杂度分析
class Solution {
public boolean isStraight(int[] nums) {
// 思路:排序 & 遍历
// 顺子的充要条件:无重复 & 除大小王外的最大最小牌只差小于5
// 1. 异常处理
if (nums == null || nums.length != 5)
return false;
// 3. 将数组升序排序
Arrays.sort(nums); // 快速排序 O(NlogN)
// 3. 遍历
int count_zero = 0;
for (int i = 0; i < nums.length - 1; i++){
if (nums[i] == 0){
count_zero ++;
continue;
}
if (nums[i+1] == nums[i])
return false;
}
return nums[4] - nums[count_zero] < 5;
}
}
2023/11/25
2024/3/9
从若干副扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。
示例 1:
示例 2:
分析 这道题的关键在于找出能成为顺子的条件。顺子的条件有两个:没有对子&数字连续。