美文网首页
【剑指Offer 44】扑克牌的顺子

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

作者: 3e1094b2ef7b | 来源:发表于2017-07-22 23:35 被阅读59次

题目:从扑克牌中随机抽5张牌,判断是不是一个顺子, 即这5张牌是不是连续的。2~10为数字本身, A为1。 J为11、Q为12、 为13。小王可以看成任意数字。

代码如下:

package demo;

import java.util.Arrays;

/**
 * 扑克牌的顺子
 * 
 * @author xiangdonglee
 *
 */
public class Test44 {
    public static boolean isContinuous(int[] numbers) {
        if (numbers == null || numbers.length != 5) {
            return false;
        }
        // 对元素进行排序
        Arrays.sort(numbers);
        int numberOfZero = 0;
        int numberOfGap = 0;
        for (int i = 0; i < numbers.length && numbers[i] == 0; i++) {
            numberOfZero++;
        }
        // 第一个非0元素的位置
        int small = numberOfZero;
        int big = small + 1;
        while (big < numbers.length) {
            if (numbers[small] == numbers[big]) {
                return false;
            }
            numberOfGap += (numbers[big] - numbers[small] - 1);
            small = big;
            big++;
        }
        return numberOfGap <= numberOfZero;
    }

    public static void main(String[] args) {
        int[] numbers1 = { 1, 3, 2, 5, 4 };
        System.out.println(isContinuous(numbers1));

        int[] numbers2 = { 1, 3, 2, 6, 4 };
        System.out.println(isContinuous(numbers2));

        int[] numbers3 = { 0, 3, 2, 6, 4 };
        System.out.println(isContinuous(numbers3));

        int[] numbers4 = { 0, 3, 1, 6, 4 };
        System.out.println(isContinuous(numbers4));

        int[] numbers5 = { 1, 3, 0, 5, 0 };
        System.out.println(isContinuous(numbers5));

        int[] numbers6 = { 1, 3, 0, 7, 0 };
        System.out.println(isContinuous(numbers6));

        int[] numbers7 = { 1, 0, 0, 5, 0 };
        System.out.println(isContinuous(numbers7));

        int[] numbers8 = { 1, 0, 0, 7, 0 };
        System.out.println(isContinuous(numbers8));

        int[] numbers9 = { 3, 0, 0, 0, 0 };
        System.out.println(isContinuous(numbers9));

        int[] numbers10 = { 0, 0, 0, 0, 0 };
        System.out.println(isContinuous(numbers10));

        int[] numbers11 = { 1, 0, 0, 1, 0 };
        System.out.println(isContinuous(numbers11));
    }
}
运行结果

来源:http://blog.csdn.net/derrantcm/article/details/46798661

相关文章

  • 【剑指Offer 44】扑克牌的顺子

    题目:从扑克牌中随机抽5张牌,判断是不是一个顺子, 即这5张牌是不是连续的。2~10为数字本身, A为1。 J为1...

  • 每日一练(33):扑克牌中的顺子

    title: 每日一练(33):扑克牌中的顺子 categories:[剑指offer] tags:[每日一练] ...

  • [剑指offer] 扑克牌顺子

    本文首发于我的个人博客:尾尾部落 题目描述 LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2...

  • 剑指offer | 扑克牌的顺子

    扑克牌的顺子 从扑克牌中随机抽5张牌,判断是不是顺子,即这5张牌是不是连续的。2-10为数字本身,A为1,J为11...

  • 剑指offer【60~68】

    题目链接: 剑指offer 60-68 目录: 60. n 个骰子的点数61. 扑克牌顺子62. 圆圈中最后剩下的...

  • 剑指Offer--扑克牌顺子

    题目描述: LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)....

  • 剑指offer 面试题44:扑克牌的顺子

    题目:从扑克牌中随机抽取5张牌,判断是不是一个顺子,即这5张牌是不是连续的。大小王可以看成任意数字 解法分析:问题...

  • 剑指Offer笔试题(5)

    剑指Offer笔试题(4) 题目来源:牛客网 题目一 扑克牌顺子 描述: LL今天心情特别好,因为他去买了一副扑...

  • 剑指offer第二版-61.扑克牌中的顺子

    本系列导航:剑指offer(第二版)java实现导航帖 面试题61:扑克牌中的顺子 题目要求:抽取5张牌,判断是不...

  • 剑指offer编程题—扑克牌顺子

    题目描述LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)......

网友评论

      本文标题:【剑指Offer 44】扑克牌的顺子

      本文链接:https://www.haomeiwen.com/subject/oirpkxtx.html