剑指offer45:扑克牌顺子
1 题目描述
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:扑克牌顺子的更多相关文章
- 剑指Offer-45.扑克牌顺子(C++/Java)
题目: LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定 ...
- 剑指Offer——扑克牌顺子
题目描述: LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他 ...
- 剑指offer--41.扑克牌顺子
没有判断数组长度,导致{1,3,2,5,4}输出结果是false是什么鬼??? ------------------------------------------------------------ ...
- 剑指Offer44 扑克牌的顺子
/************************************************************************* > File Name: 44_Contin ...
- 剑指offer——扑克牌的顺子
思想: 1.先将输入的几个数进行排序,sort函数是#include<algorithm>下的. 2.统计0的个数,以及相邻数的差值,比较0的个数及差值的和.看是否可以用大王填充中间的差值 ...
- 剑指Offer45 约瑟夫环
/************************************************************************* > File Name: 45_LastNu ...
- 剑指offer--45.二叉树的深度
时间限制:1秒 空间限制:32768K 热度指数:139716 题目描述 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. -- ...
- 剑指offer44 扑克牌顺序
注意一个边界条件:必须是连续的,如果前后两个数是一样的也不满足条件 class Solution { public: bool IsContinuous( vector<int> numb ...
- 【剑指offer】扑克牌的顺子
个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想測測自己的手气,看看能不能抽到顺子,假设抽到的话,他决定去买体育彩票,嘿嘿! ."红心A,黑桃3,小王,大王,方片 ...
随机推荐
- 数据结构实验之二叉树五:层序遍历 (SDUT 3344)
#include <bits/stdc++.h> using namespace std; struct node { char data; struct node *lc, *rc; } ...
- 线段树(结构体建法_QAQ)
线段树(结构体)模板 #include<iostream> #include<cstdio> #include<queue> #include<cstring ...
- jquer属性 offset、position、scrollTop
尺寸操作 1.获取宽高 a) jq对象.height/width () :只有获取高度/宽度 尺寸,不包括padding和margin 和 border 2.设置宽度 ...
- flask + nginx + uwsgi + ubuntu18.04部署python restful接口
目录 参考链接 效果展示 一.准备工作 1.1 可运行的python demo: 1.2 更新系统环境 二.创建python虚拟环境 三.设置flask应用程序 四.配置uWSGI 五.设置系统启动 ...
- BufferedWriter中write与close函数使用
BufferedWriter 是一个缓冲字符输出流,可以将要输出的内容先缓冲到一个字符数组中,等字符数组满了才一次性写到输出流内,默认的字符数组长度为8192.使用BufferedWriter 时需要 ...
- Mac下安装MySQL 5.6.40
Mac下安装MySQL 5.6.40 - 干勾鱼的CSDN博客 - CSDN博客 原创 Mac下安装MySQL 5.6.40 2018-06-18 10:34:03 我是干勾鱼 阅读数 5927 ...
- Android 显示系统:Vsync机制
一.Vsync简介: 屏幕的刷新过程是每一行从左到右(行刷新,水平刷新,Horizontal Scanning),从上到下(屏幕刷新,垂直刷新,Vertical Scanning).当整个屏幕刷新完毕 ...
- vue+七牛云 截图工具
1.安装:npm install vue-cropper 2.引入:import VueCropper from 'vue-cropper' Vue.use(VueCropper) <templ ...
- PLSQL 经常自动断开失去连接的解决过程
转: PLSQL 经常自动断开失去连接的解决过程 问题背景: 情况是这样的,很多开发同事的PLSQL上班时间开着8个小时,有时候他们出去抽烟后或者中午吃完饭,回来在PLSQL上面执行就报错无响应,然后 ...
- 安装Oracle11g出现INS-13001环境不满足最低要求
原版:https://blog.csdn.net/Q_Sea__/article/details/79012808 第一次安装Oracle11g,就出现这个问题,就找了一些解决方案.现在总结一下. 出 ...