Leetcode Link: 剑指 Offer 61. 扑克牌中的顺子 - 力扣(LeetCode)
题目

解法一
思路:
本质:
0 的数量大于等于 差-1 的总和即可
譬如[0, 0, 2, 3, 6] 由于 0 可以当作任意牌,所以只要缺少的中间的牌数⇐0 的数量即可,本题缺少 4,5 两张牌,正好两个 0,满足
如果两个牌不为零,但是相等,一定是 False
题解:
class Solution:
def isStraight(self, nums: List[int]) -> bool:
nums.sort()
n0 = 0 # 0的数量
diff = 0 # 缺少的牌数
for i in range(len(nums)-1):
if nums[i] == 0:
n0 += 1
else:
if nums[i] == nums[i+1]: #特判,相等不为0,一定False
return False
diff = nums[i+1] - nums[i] - 1 + diff
# 处理最后一张
if nums[-1] == 0: n0 += 1
return n0 >= diff