爽歪歪666
不以物喜,不以己悲,努力才是永恒的主题。

题目描述

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。
思路:
统计数组中0出现的次数,(0可以充当任何数),排序,统计间隔(缺的数个数),0的次数比间隔数大,则是顺子,否则不是,特别的处理一下,如果出现对子,肯定不是顺子
代码
 1 # -*- coding:utf-8 -*-
 2 class Solution:
 3     def IsContinuous(self, numbers):
 4         # write code here
 5         if len(numbers) < 1:
 6             return False
 7         # 统计0的个数
 8         numberOfZero = 0
 9         for i in numbers:
10             if i==0:
11                 numberOfZero +=1
12         # 排序
13         numbers = sorted(numbers)
14         #统计间隔  
15         numbersOfGap = 0
16         for i in range(numberOfZero+1,len(numbers)): # 从第二个非零处起
17             if numbers[i]-numbers[i-1]>1:
18                 numbersOfGap += numbers[i]-numbers[i-1]-1
19             if numbers[i]==numbers[i-1]: # 排序后的数组存在对子
20                 return False
21         return True if numberOfZero>=numbersOfGap else False
22                 
23                 
24         

 

posted on 2020-04-30 12:10  爽歪歪666  阅读(167)  评论(0编辑  收藏  举报