LeetCode Offer 61. Straight in Poker
algo
链接:剑指 Offer 61. 扑克牌中的顺子 - 力扣(LeetCode)
1 - 13 都正常,0 可以代替任何数字。顺子代表数字都是连续的,且注意牌是乱序的!比较麻烦的就是 0。
那么可以排序之后,如果没有 0 简单判断,如果有 0 就看能不能合理插入,如果全是 0 也可以。
class Solution:
def isStraight(self, nums: List[int]) -> bool:
nums.sort()
k = 0 # 前四个数中 0 的个数
for i in range(4):
if nums[i] == 0:
k += 1
elif nums[i] == nums[i + 1]:
return False # 不能有重复
if nums[4] - nums[k] < 5: # 不要太远就都能用 0 填
return True
return False
或者统计 gap 大小:
class Solution:
def isStraight(self, nums: List[int]) -> bool:
nums.sort()
zeros = nums.count(0)
last = None
gap = 0
for x in nums:
if not last:
if x:
last = x
else:
if x == last:
return False
gap += x - last - 1
last = x
return gap <= zeros
Last update :
May 28, 2023
Created : May 28, 2023
Created : May 28, 2023