class Solution {
public boolean isStraight(int[] nums) {
// 利用 Set 判断是否存在重复的牌
Set<Integer> set = new HashSet<>();
// 初始化:五张牌中的最大值和最小值
int min = 14; // min 和 max 的初始值别搞反啦
int max = 0;
// 遍历五张扑克牌
for (int num: nums) {
// 大小王可以看作是任意数字,所以只要没有重复的牌
// 同时【最大牌 - 最小牌 < 5】那么就是一个顺子
if (num == 0)
continue;
// 存储最大的牌
max = Math.max(max, num);
// 存储最小的牌
min = Math.min(min, num);
// 如果出现了重复的牌,必定不是顺子!
if (set.contains(num))
return false;
// 每遍历一个牌都放入 set(set会自动去重)
set.add(num);
}
// 遍历完所有的牌之后,判断最大值和最小值的差
return max - min < 5;
}
}
3.2 Kotlin
class Solution {
fun isStraight(nums: IntArray): Boolean {
// 利用 Set 判断是否存在重复的牌
val set = HashSet<Int>()
// 初始化:五张牌中的最大值和最小值
var min = 14
var max = 0
// 遍历五张扑克牌
for (num in nums) {
// 大小王可以看作是任意数字,所以只要没有重复的牌
// 同时【最大牌 - 最小牌 < 5】那么就是一个顺子
if (num == 0)
continue
// 存储最大的牌
max = Math.max(max, num)
// 存储最小的牌
min = Math.min(min, num)
// 如果出现了重复的牌,必定不是顺子!
if (set.contains(num))
return false
// 每遍历一个牌都放入 set(set会自动去重)
set.add(num)
}
// 遍历完所有的牌之后,判断最大值和最小值的差
return max - min < 5
}
}