剑指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,小王,大王,方片 ...
随机推荐
- Process 'xx' Is Running
最近在试着使用idea,工具快捷键和设置都不太熟,今天遇到进程占用问题,感觉有必要总结一下,避免下次遇到同样问题. 常用快捷键: ctrl+n 搜索 ctrl+Shift+n 全部搜索 Ctrl+Al ...
- Memcached 之在win10上的安装
一.下载 http://static.runoob.com/download/memcached-win64-1.4.4-14.zip 二.安装 memcached <1.4.5 版本安装 1. ...
- Linux命令行提交更新冲突
1.在harry目录下的hello文件第五行加一些内容 2.将修改后文件执行提交操作 提交成功,文件版本升为5 3.在sally目录下同样修改hello文件第五行 4.sally进行提交操作 发现提交 ...
- JMeter-正则表达式(取出银行卡号后4位)
{ : "custName":"奚红艳", : "banks": : [ : : { : : : "id":" ...
- 记录linux 生成crash dump文件步骤
执行文件编译时加入-g 命令 例如 g++ -g test.cpp 查看当前系统限制情况 ulimit -a 设置crash dump 文件大小 ulimit -c unlimited unlimit ...
- NiewPatchDrawable
在使用AS的时候要注意以下几点: 1.点9图不能放在mipmap目录下,而需要放在drawable目录下! 2.AS中的.9图,必须要有黑线,不然编译都不会通过 xml定义NinePatchDrawa ...
- PHP中smarty与MYSQL数据库的连接
进行与MYSQL数据库的关联 先从最简单的数据库查询语句开始 1.先创建mysql数据库 仅仅创建一个测试数据 2.引用smarty框架 3.按照上文在damo文件夹下创建smarty_inc.php ...
- OpenStack 虚拟机热迁移流程图
目录 文章目录 目录 源计算节点与目的计算节点之间的交互流程 Nova 和 Neutron 之间的交互流程 源计算节点与目的计算节点之间的交互流程 热迁移主要包括三个阶段: pre_live_migr ...
- django安装xadmin中出现的报错汇总
报错一:ModuleNotFoundError: No module named 'django.core.urlresolvers' ModuleNotFoundError: No module n ...
- 参照UB单创建DN并过账
*&---------------------------------------------------------------------* *& Form FRM_DN_POST ...