剑指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
Lucky!”。LL决定去买体育彩票啦。 现在,要求你使用这幅牌模拟上面的过程,然后告诉我们LL的运气如何。为了方便起见,你可以认为大小王是0。

逆向分析思路: 1.张数不为5张,则返回false。

2.有除0以外的其他相等的牌,也返回false。

3.有除0以外,最大值与最小值之间的差值大于4的,也返回false。

4.其他返回true。

代码:

import java.util.Arrays;
public class Solution {
    public boolean isContinuous(int [] numbers) {
        int length=numbers.length;
        if(length!=5){
            return false;
        }
        Arrays.sort(numbers);
        for(int i=0;i<length-1;i++){
            for(int j=i+1;j<length;j++){
                if(numbers[i]==numbers[j]&&numbers[i]!=0){
                    return false;
                }else if(numbers[j]-numbers[i]>4&&numbers[i]!=0){
                    return false;
                }
            }
        }
        return true;
    }
}
时间: 2024-11-24 17:56:15

剑指offer(三十)之扑克牌顺子的相关文章

剑指offer系列源码-扑克牌顺子

题目1355:扑克牌顺子 时间限制:2 秒内存限制:32 兆特殊判题:否提交:1415解决:398 题目描述: LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!"红心A,黑桃3,小王,大王,方片5","Oh My God!"不是顺子.....LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A

【剑指Offer】44、扑克牌顺子

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

剑指offer(三十二)之把字符串转换成整数

题目描述 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 思路分析: 1.判断字符串是否空 2.定义一个符号位变量和结果变量,并将字符串转为字符数组 3.判断是正数,还是负数 4.判断是否是0-9之间数 代码: <span style="font-family:SimSun;font-size:18px;">public class Solution { public int StrToInt(String str) { if(str==null||str

剑指offer(三十六)之栈的压入、弹出序列

题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列. <span style="font-size:18px;color:#cc33cc;">import java.util.*; public class Solution { public boolea

剑指offer(三十八)之第一个只出现一次的字符位置

题目描述 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符的位置.若为空串,返回-1.位置索引从0开始 思路分析: 1.先把字符串存到字节数组当中 2.设置一个标志位,再用两个FOR循环 <span style="font-family:SimSun;font-size:24px;">public class Solution { public int FirstNotRepeatingChar(String str)

剑指offer(三十四)之二叉树的镜像

题目描述 操作给定的二叉树,将其变换为源二叉树的镜像. 输入描述: 二叉树的镜像定义:源二叉树 8 / 6 10 / \ / 5 7 9 11 镜像二叉树 8 / 10 6 / \ / 11 9 7 5 代码1: 采用递归的方法,递归深度大时内存容易爆掉 <span style="font-size:18px;">/** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = n

剑指offer系列35:扑克牌顺子

把大小王当做0.然后对整个序列排序.排序后计算大小王的数目和需要大小王填的坑的数目.如果大小王数目大于等于要填的坑的数目就返回真,否则返回假. 1 class Solution { 2 public: 3 bool IsContinuous(vector<int> numbers) { 4 if (numbers.empty()) 5 return false; 6 sort(numbers.begin(), numbers.end()); 7 //count:需要填的坑的数目,king:大小

【剑指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

剑指offer(六十)之二叉搜索树与双向链表

题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. 方法一:非递归版 解题思路: 1.核心是中序遍历的非递归算法. 2.修改当前遍历节点与前一遍历节点的指针指向. import java.util.Stack; public TreeNode ConvertBSTToBiList(TreeNode root) { if(root==null) return null; Stack<TreeNode> stack = ne