剑指 Offer 61. 扑克牌中的顺子
1.题目
2.官方的解决方案
class Solution:
def isStraight(self, nums: List[int]) -> bool:
# 1.公式,顺子的最大值 - 最小值 < 5 恒成立
# 2.判断除了0以外的重复
replace = set() # 用来判重
i = 0
max_p = 14
min_p = 0
while i < 5:
if nums[i] == 0:
continue
print(i)
max_p = max(max_p, nums[i])
min_p = min(min_p, nums[i])
if nums[i] in replace:
return False
replace.add(max_p)
i += 1
return max_p - min_p < 5
- 时间复杂度: O ( n ) O(n) O(n)
- 空间复杂度: O ( n ) O(n) O(n)