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

2020-03-01  本文已影响0人  castlet

题目描述

解题思路

  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;
}
上一篇下一篇

猜你喜欢

热点阅读