45.扑克牌顺子(python)
题目描述
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。
思路:
case1:无大小王(0): 看是这五张牌是不是从最小的到5+min
case2:有大小王(0): 例如[0,2,4,5,6]]对0进行计数,同时构造有顺子的情况,比如最小的是2 则构造[2,3,4,5,6] 把除零以外的数,从构造的顺子中刨除,剩下[3],刚好 count(0)==len([3]) return True
1 class Solution: 2 def IsContinuous(self, numbers): 3 # write code here 4 if numbers==[]: 5 return False 6 a = sorted(numbers) 7 if 0 not in numbers: 8 if a == [i for i in range(a[0],a[0]+5)]: 9 return True 10 return False 11 else: 12 count = a.count(0) 13 a = a[count:] 14 a_ = [i for i in range(a[0],a[0]+5)] 15 print(a_) 16 i = 0 17 k = 0 18 for i in range(5): 19 if a_[i]in a: 20 k+=1 21 if (5-k)==count: 22 return True 23 return False
2019-12-25 20:16:06
分类:
PYTHON
, 剑指offer编程题
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 自定义通信协议——实现零拷贝文件传输
· Brainfly: 用 C# 类型系统构建 Brainfuck 编译器
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· DeepSeek 全面指南,95% 的人都不知道的9个技巧(建议收藏)
· 自定义Ollama安装路径
· 本地部署DeepSeek
· 快速入门 DeepSeek-R1 大模型
· DeepSeekV3+Roo Code,智能编码好助手