题目描述:LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张\^_\^)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子…..LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。上面的5张牌就可以变成“1,2,3,4,5”(大小王分别看作2和4),“So Lucky!”。LL决定去买体育彩票啦。 现在,要求你使用这幅牌模拟上面的过程,然后告诉我们LL的运气如何, 如果牌能组成顺子就输出true,否则就输出false。为了方便起见,你可以认为大小王是0。
Solutions
倒没有什么特别的考察,主要看题目:
# -*- coding:utf-8 -*-
class Solution:
def IsContinuous(self, numbers):
# write code here
if numbers is None or len(numbers) < 5:
return False
n_0 = 0
for n in numbers:
if n == 0:
n_0 += 1
if n_0 == 4:
return True
count = 0
numbers = sorted(numbers)
pre = numbers[n_0]
for n in numbers[n_0+1:]:
print(n, pre)
if pre != 0 and pre == n:
return False
else:
count += n - pre
pre = n
if count - 4 != 0:
return False
return True
# 运行时间:25ms
# 占用内存:5860k
对比下别人的实现:
# -*- coding:utf-8 -*-
class Solution:
def IsContinuous(self, numbers):
# write code here
if not numbers:
return False
numbers.sort()
zeros = numbers.count(0)
for i,value in enumerate(numbers[:-1]):
if value != 0:
if value==numbers[i+1]:
return False
zeros=zeros - (numbers[i+1]-value-1)
if zeros <0 :
return False
return True
# 运行时间:23ms
# 占用内存:5732k