题目:
从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,大小王可以看做任意数字。为了方便,大小王均以0来表示,并且假设这副牌中大小王均有两张。
样例1
输入:[8,9,10,11,12]
输出:true
样例2
输入:[0,8,9,11,12]
输出:true
解答:
# -*- coding:utf-8 -*-
class Solution:
def isContinuous(self, numbers):
"""
:type numbers: List[int]
:rtype: bool
"""
numbers.sort()
zero = 0
if len(numbers) < 5:
return False
for i in range(5):
if numbers[i] == 0:
zero += 1
if zero == 4:
return True
cur = 0
start = 0
for i in range(len(numbers)):
if numbers[i] != 0:
start = i + 1
cur = numbers[i]
break
while(start < len(numbers)):
diff = numbers[start] - cur
if diff == 0:
return False
if diff == 1:
cur = numbers[start]
start += 1
else:
if diff - 1 <= zero:
zero -= diff - 1
cur = numbers[start]
start += 1
else:
return False
return True