美文网首页
《剑指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