题目描述
解法
一、 如果想把这5张牌排成顺子,
- 这五张牌除了0之外,不能有重复的值
- 这五张牌最大值和最小值的差小于5
如果想排列成顺子,那么必须满足上面两点要求
class Solution:
def isStraight(self, nums: List[int]) -> bool:
repeat = set()
max_num = 0
min_num = 14
for num in nums:
if num == 0:
continue
if num in repeat:
return False
if num < min_num:
min_num = num
if num > max_num:
max_num = num
repeat.add(num)
return max_num-min_num < 5
二、排序+遍历
先对数组进行排序,判断排序后相邻的两个数是否相同(除非都为0),那么返回false
class Solution:
def isStraight(self, nums: List[int]) -> bool:
nums.sort()
joker = 0
for i in range(len(nums)-1):
if nums[i] == 0:
joker += 1
elif nums[i] == nums[i+1]:
return False
return nums[-1]-nums[joker]<5