[剑指Offer] 45.扑克牌顺子

题目描述

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的运气如何。为了方便起见,你可以认为大小王是0。

【思路】先sort一下,如果 0 的个数<5 && 正数互不相同 && 正数最大最小值相差 < 5,则满足条件。

 1 class Solution {
 2 public:
 3     bool IsContinuous( vector<int> numbers ) {
 4         if(numbers.size() != 5)    return false;
 5         sort(numbers.begin(),numbers.end());
 6         int num_of_zero = 0;
 7         //找到0的个数
 8         while(num_of_zero < 5 && numbers[num_of_zero] == 0)
 9             num_of_zero ++;
10         //看数组正数之间是否有重复数字
11         for(int i = num_of_zero;i < 4;i ++)
12             if(numbers[i] == numbers[i + 1]) return false;
13         return (num_of_zero < 5) && (numbers[4] - numbers[num_of_zero] < 5);
14     }
15 };
时间: 2024-08-11 03:37:31

[剑指Offer] 45.扑克牌顺子的相关文章

【剑指offer】扑克牌顺子

题目链接:扑克牌顺子 题意: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

剑指offer:扑克牌顺子

http://wiki.jikexueyuan.com/project/for-offer/question-forty-four.html 题目:从扑克牌中随机抽 5 张牌,判断是不是一个顺子, 即这 5 张牌是不是连续的.2-10 为数字本身, A 为 1. J 为 11.Q 为 12. 为 13.小王可以看成任意数字. 首先把数组排序, 记录非0的最小值和最大值, 如果连起来则需要满足: 1)数组中不能有重复值(没有对子) 2)max-min<=4 public static boolea

《剑指offer》扑克牌顺子

[ 声明:版权所有,转载请标明出处,请勿用于商业用途.  联系信箱:[email protected]] 题目链接:http://www.nowcoder.com/practice/762836f4d43d43ca9deb273b3de8e1f4?rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking 题目描述 LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是

剑指offer (44) 扑克牌的顺子

题目:从扑克牌中随机抽取5张牌,判断是不是一个顺子,即这5张牌是不是连续的 2-10为数字本身,A为1,J为11,Q为12,K为13,大小王可以替换任意数字 题解分析: step1. 首先大小王看作0,与其他数字都区分开 step2. 对这5张牌排序 step3. 统计5张牌中0的个数和 相邻数字之间的空缺总数,因为 我们可以把0替换掉空缺所需的数 bool IsContinuous(std::vector<int>& num) { if (num.size() != 5) retur

剑指offer (45) 约瑟夫环问题

题目:有编号从 1 到 n 的 n 个人坐成一圈报数,报到 m 的人出局,下一位再从 1 开始, 如此持续,直止剩下一位为止,报告此人的编号 X.输入 n, m,求出 X 题解分析: 一开始有 n 个人,报到 m 的人出局后,如果我们从刚才出局的那人的下一位开始重新从 1 开始编号,原问题就转化为了一个 n – 1 人的问题. 如下表所示: 原始编号 第一人出局后的编号 m + 1 1 m + 2 2 m + 3 3 ... ... m - 2 n - 2 m - 1 n - 1 m 已出局 老

【剑指offer】扑克牌的顺子

转载请注明出处:http://blog.csdn.net/ns_code/article/details/27849055 题目描写叙述: LL今天心情特别好,由于他去买了一副扑克牌,发现里面竟然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想測測自己的手气,看看能不能抽到顺子,假设抽到的话,他决定去买体育彩票,嘿嘿!."红心A,黑桃3,小王,大王,方片5","Oh My God!"不是顺子.....LL不高兴了,他想了想,决定大\小

【Java】 剑指offer(45) 把数组排成最小的数

本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3, 32, 321},则打印出这3个数字能排成的最小数字321323. 思路 不好的方法:求出所有全排列(类似字符串的排列 ),将数字拼起来,最后求出所有的最小值.这效率太低,且没有考虑到大数问题. 好的方法:观察规律,自行定义一种排序规则. 对于数字m和n,可以拼接

剑指offer 45.抽象建模能力 扑克牌顺子

题目描述 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!”.

剑指offer45:扑克牌顺子

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!