美文网首页
《剑指offer第二版》面试题61:扑克牌中的顺子(java)

《剑指offer第二版》面试题61:扑克牌中的顺子(java)

作者: castlet | 来源:发表于2020-03-01 19:17 被阅读0次

    题目描述

    • 从扑克牌中随机抽取5张,判定是不是顺子,A为1,J为11,Q为12,K为13,大小王可以看成任意数字。

    解题思路

    1. 现将数组排序。
    2. 找出0的个数A。
    3. 找出相邻数字之间空缺数字的总数B。
    4. 如果B小于等于A,则说明是顺子。
    5. 如果出现了对子,则肯定不是顺子。

    代码

    boolean isContinuous(int[] arr){
        if (arr == null || arr.length <= 0) {
            return false;
        }
    
        Arrays.sort(arr);
        int numbersOf0 = 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == 0) {
                numbersOf0 ++;
            }
        }
    
        int end = numbersOf0 + 1;
        int gap = 0;
        while (end < arr.length) {
            if (arr[end] - arr[end - 1] == 0) {
                return false;
            }
            if (arr[end] - arr[end - 1] == 1) {
                end++;
            } else if (arr[end] - arr[end - 1] > 1) {
                gap = gap + (arr[end] - arr[end - 1] - 1);
                end++;
            }
        }
    
        if (gap <= numbersOf0) {
            return true;
        }
        return false;
    }
    

    相关文章

      网友评论

          本文标题:《剑指offer第二版》面试题61:扑克牌中的顺子(java)

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