题目
扑克牌中的顺子
一、set
判断扑克牌是否是顺子只需要满足如下两个条件:
1.排除大小王(0),最大值-最小值 < 5
2.排除大小王,没有重复元素
重复元素的判断可以使用set和dict这两种,很明显不需要计数是选择set会更节省内存。
遍历数组得到最大值和最小值~
def isStraight(arr):
'''扑克牌是否是顺子'''
max, min = arr[0], arr[0]
d = {}
for num in arr:
if num == 0:
continue
if num > max:
max = num
if num < min or min == 0:
min = num
if num not in d:
d[num] = 1
else:
return False
if max - min >= 5:
return False
else:
return True
二、排序
def isStraight_1(arr):
arr = sorted(arr)
joker = 0
for i in range(len(arr)-1):
if arr[i] == 0:
joker += 1
continue
if arr[i] == arr[i+1]:
return False
return arr[4] - arr[joker] < 5