61-扑克牌中的顺子

题目:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。

def is_continous(arrys):
    cnt_0 = arrys.count(0)
    res = sorted(arrys)
    i,length = cnt_0,len(res)
    cnt = 0
    while i<length-1:
        if res[i+1]-res[i]==0:
            return False
        if res[i+1]-res[i]>1:
            cnt = cnt+res[i+1]-res[i]-1
        i += 1

    if cnt_0>=cnt:
        return True
    return False

  注:1、统计数组中0的个数,即大小王的个数

2、对数组进行排序

3、遍历数组,统计数组非0部分的间隔和。如果遇到有相邻相同的即表示不能组成连续的数组,返回False

4、最后与0 的个数进行比较,如果小于等于0的个数即连续,否则,不连续。

原文地址:https://www.cnblogs.com/kingshine007/p/11578520.html

时间: 2024-10-15 04:15:42

61-扑克牌中的顺子的相关文章

如何在JS中计算扑克牌中的顺子、对子、半顺、豹子、杂六

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>如何计算扑克牌中的顺子.对子.半顺.豹子.杂六</title> 5 <meta charset="utf-8"/> 6 </head> 7 <body> 8 号码1:<input type="number" value="5" id="num1&q

【剑指offer】61、扑克牌中的顺子

题目 从扑克牌中随机抽5张牌,判断是不是一个顺子.2~10为本身,A是1,J,Q,K分别是11,12,13.大小王百搭 思路 关键就是大小王百搭.把大小王都当作0. 我们先统计出数组中0的个数 然后将数组排序,统计不连续的空缺总数 最后判断0的个数是否比空缺总数大 class Solution { public: bool IsContinuous( vector<int> numbers ) { if (numbers.size() != 5 ) return false; int leng

面试题61:扑克牌中的顺子

1.题目描述: 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

算法题7 判断扑克牌中的顺子

题目: 来源 http://www.cnblogs.com/python27/archive/2011/11/27/2264405.html 随机抽取扑克牌中的n张牌,判断是不是顺子,即这5张牌是不是连续的.其中A看成1,J看成11,Q看成12,K看成13,大小王可以看成任何需要的数字. 分析: 对于扑克牌来说,数字范围是很明确的,1到K外加大小王(设定为M).假如这副牌是个顺子,也就是每张牌都不相同,那么利用一个大小为14的辅助数组counts[]就可以快速的实现排序,记录每张牌出现的次数,然

44、扑克牌中的顺子

思路:将大小王设为0,5个数排序. 1.统计0个数和间隔数,空缺总数小于等于0个数说明连续. 2.且数组不能有相同的数此为对子.排序只有在n很大时才有意义.普通排序即可. import java.util.Arrays; public class Solution { public boolean isContinuous(int [] numbers) { //数组不能为空,也不能长度小于5 if (numbers == null || numbers.length < 5) { return

剑指offer总结列表

num 题目 英文 链接 备注 1         2         3 数组中重复的数字       4 二维数组中的查找       5 替换空格       6 从头到尾打印链表       7 重建二叉树       8 二叉树的下一个节点       9 用两个栈实现队列       10 斐波那契额数列       11 旋转数组的最小数字       12 矩阵中的路径       13 机器人的运动范围       14 剪绳子       15 二进制中1的个数      

剑指offer速查表

3.数组中重复数字:每个位置放置数字与下标对应相等 O(n) 4.二维数组中的查找:左下角开始比较 O(m+n) (微软) 5.替换空格:python直接替换 6.从尾到头打印链表:python insert函数 xxx7.重建二叉树:前序中序遍历特点递归 xxx8.二叉树的下一个节点:根据中序遍历特点,按有无右子树分情况讨论 9.两个栈实现队列:栈的特点 10.斐波那契数列:递归思想,循环方法自下而上计算 O(n) (oppo) 11.旋转数组最小数字:二分查找,考虑left,right,mi

《剑指offer》算法题第十一天

今日题目: 滑动窗口的最大值 扑克牌中的顺子 圆圈中最后剩下的数字 求1+2+3+...+n 不用加减乘除做加法 构建乘积数组 今天的题目比较有意思,可以学到很多知识,包括第1题中的数据结构--双向队列,第3题约瑟夫环问题等. 1.滑动窗口的最大值 题目描述: 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值.例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}: 针对数组{2,3,4,2,6,

《剑指Offer》题四十一~题五十

四十一.数据流中的中位数 题目:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值. 四十二.连续子数组的最大和 题目:输入一个整型数组,数组里有正数也有负数.数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为O(n). 四十三.1~n整数中1出现的次数 题目:输入一个整数n,求1~n这n个整数的十进制表示中1出现的次数.例如,输