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!”。LL决定去买体育彩票啦。 现在,要求你使用这幅牌模拟上面的过程,然后告诉我们LL的运气如何, 如果牌能组成顺子就输出true,否则就输出false。为了方便起见,你可以认为大小王是0。

2 思路和方法

  (1)首先应该对数组进行排序。

  (2)统计数组中大小王(0)出现的个数。while(numbers[index]==0) ++index; // 统计0的个数

  (3)统计数组中所有相邻数之间的间隔。

  (4)同时还需要排除对子的情况,如果出现了对子,那么肯定不可能是顺子(0除外)。

  (5)最后比较0的个数和间隔大小,如果0的个数大于等于间隔数,说明可以组成顺子。

3 C++核心代码

 class Solution {
public:
bool IsContinuous( vector<int> numbers ) {
if (numbers.size() != )return false; sort(numbers.begin(), numbers.end());
int numOfZero = ;
//统计0的个数
for (int i = ; i != ; i++) {
if (!numbers[i])
numOfZero++;
} int beg = numOfZero+;
int numOfGap = ;
while (beg < ) {
//如果出现了对子,那么肯定不可能是连子
if (numbers[beg - ] == numbers[beg])
return false; numOfGap += numbers[beg] - numbers[beg - ] -;
beg++;
} return (numOfZero >= numOfGap) ? true : false;
}
};

4 C++完整代码

 #include <iostream>
#include <vector>
#include <algorithm> using namespace std; int main() {
vector<int> data{ ,,,, }; if (IsContinuous(data)) {
cout << "is continuous."<< endl;
}
else {
cout << "You don't get lucky." << endl;
} system("pause");
return ;
} bool IsContinuous(vector<int> numbers) {
if (numbers.size() != )return false; sort(numbers.begin(), numbers.end());
int numOfZero = ;
//统计0的个数
for (int i = ; i != ; i++) {
if (!numbers[i])
numOfZero++;
} int beg = numOfZero+;
int numOfGap = ;
while (beg < ) {
//如果出现了对子,那么肯定不可能是连子
if (numbers[beg - ] == numbers[beg])
return false; numOfGap += numbers[beg] - numbers[beg - ] -;
beg++;
} return (numOfZero >= numOfGap) ? true : false;
}

参考资料

https://blog.csdn.net/m0_37950361/article/details/82153790

剑指offer45:扑克牌顺子的更多相关文章

  1. 剑指Offer-45.扑克牌顺子(C++/Java)

    题目: LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定 ...

  2. 剑指Offer——扑克牌顺子

    题目描述: LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他 ...

  3. 剑指offer--41.扑克牌顺子

    没有判断数组长度,导致{1,3,2,5,4}输出结果是false是什么鬼??? ------------------------------------------------------------ ...

  4. 剑指Offer44 扑克牌的顺子

    /************************************************************************* > File Name: 44_Contin ...

  5. 剑指offer——扑克牌的顺子

    思想: 1.先将输入的几个数进行排序,sort函数是#include<algorithm>下的. 2.统计0的个数,以及相邻数的差值,比较0的个数及差值的和.看是否可以用大王填充中间的差值 ...

  6. 剑指Offer45 约瑟夫环

    /************************************************************************* > File Name: 45_LastNu ...

  7. 剑指offer--45.二叉树的深度

    时间限制:1秒 空间限制:32768K 热度指数:139716 题目描述 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. -- ...

  8. 剑指offer44 扑克牌顺序

    注意一个边界条件:必须是连续的,如果前后两个数是一样的也不满足条件 class Solution { public: bool IsContinuous( vector<int> numb ...

  9. 【剑指offer】扑克牌的顺子

    个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想測測自己的手气,看看能不能抽到顺子,假设抽到的话,他决定去买体育彩票,嘿嘿! ."红心A,黑桃3,小王,大王,方片 ...

随机推荐

  1. Friends (ZOJ - 3710)

    Problem Alice lives in the country where people like to make friends. The friendship is bidirectiona ...

  2. MySQL数据分析-(14)表补充:字符集

    大家好,我是jacky朱元禄,很高兴继续跟大家学习<MySQL数据分析实战>,本节课程jacky分享的主题是表补充之字符集 在分享课程之前,jacky在跟大家强调一下逻辑的重要性,我们学习 ...

  3. 学习GeoServer遇到的问题及答案

    简介:本文的记录学习GeoServer遇到的问题,如果已有答案将会附上. 1.GeoServer介绍?,功能? GeoServer 是 OpenGIS Web 服务器规范的 J2EE 实现,利用 Ge ...

  4. 一个 TCP 连接可以发多少个 HTTP 请求

    第一个问题 第二个问题 第三个问题 第四个问题 第五个问题 曾经有这么一道面试题:从 URL 在浏览器被被输入到页面展现的过程中发生了什么? 相信大多数准备过的同学都能回答出来,但是如果继续问:收到的 ...

  5. 网络共享服务—SAMBA服务

    SAMBA服务简介 SMB:Server Message Block服务器消息块,IBM发布,最早是DOS网络文件共享协议 Cifs:common internet file system,微软基于S ...

  6. ArcGIS超级工具SPTOOLS-编号工具

    1.1  整库更新BSM 输入一个MDB或GDB,将所有的要素类和表,按某个字段BSM,BSM不存在,会自动创建,从某个开始,顺序编号. 1.2  更新BSM 根据自己输入的多个表或要素,可以自己编号 ...

  7. python笔记3 闭包 装饰器 迭代器 生成器 内置函数 初识递归 列表推导式 字典推导式

    闭包 1, 闭包是嵌套在函数中的 2, 闭包是内层函数对外层函数的变量(非全局变量)的引用(改变) 3,闭包需要将其作为一个对象返回,而且必须逐层返回,直至最外层函数的返回值 闭包例子: def a1 ...

  8. SQL-W3School-高级:SQL LIKE 操作符

    ylbtech-SQL-W3School-高级:SQL LIKE 操作符 1.返回顶部 1. LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式. LIKE 操作符 LIKE 操作符用于在 ...

  9. Vue tree自定义事件注意点

    <template> <div id="Tree_ElementTree" style="height: 100%;"> <el- ...

  10. Linux学习:使用 procrank 测量系统内存使用情况

    程序员应该了解一个基本问题:我的程序使用了多少内存?这可能是一个简单的问题,但是对于像Linux这样的虚拟内存操作系统,答案是相当复杂的,因为top和ps给出的数字不能简单相加.进程中两个最常见的内存 ...