[オファー] [61] [ストレート]トランプ

タイトル説明

  ランダムにカード5からトランプ、決意、すなわち、5枚のカードが連続していない、ストレートではありません。2番号自体と10に、Aは1であり、Jは11であり、Qが12で、K 13、及び大型は、任意の数の王と見なすことができます。

牛が質問がネットワークに対処はねのけます

アイデア解析

  問題5つの数字が連続していない分析キングサイズ0を配置するために注意を払っているが、配列をソートするための最も直感的な方法です。0(キングサイズ)は、任意の数として使用することができますので、我々は完全な配列に欠員を埋めるために0を使用することができます。ソート後の配列は連続していない場合、それは限り、我々は0これらの2つの図に欠員を埋めることができ、十分持っているように、桁数で区切られた2つの数字に隣接して、実際には、この配列は連続しています。後たとえば、つまり、私たちは0を持って、1と3の間の配列{0,1,3,4,5}、ギャップ2をソートするために、我々は、ギャップを埋めるために2として使用することができます。

テストケース

  1. 機能テスト:描かれたカードは、王の一つ以上の大型を持って、カードのうち、王大きくありません。カードは、サブの外にあります。
  2. 特別な入力テスト:nullptrポインタを入力します。

Javaコード

public class Offer061 {
    public static void main(String[] args) {
        test1();
        test2();
        test3();

    }

    public static boolean isContinuous(int[] numbers) {
        return Solution1(numbers);
    }

    private static boolean Solution1(int[] numbers) {
        if (numbers == null || numbers.length <= 0)
            return false;
        Arrays.sort(numbers);
        int numberOf0 = 0;
        int numberOfGap = 0;
        for (int i = 0; i < numbers.length; i++) {
            if (numbers[i] == 0)
                numberOf0++;
        }
        int small = numberOf0;
        int big = numberOf0 + 1;
        while (big < numbers.length) {
            if (numbers[small] == numbers[big])
                return false;
            numberOfGap += numbers[big++] - numbers[small++] - 1;
        }
        if (numberOf0 >= numberOfGap) 
            return true;
        return false;
    }

    private static void test1() {

    }

    private static void test2() {

    }

    private static void test3() {

    }

}

コードリンク

安全コードを証明するためにオファー-Java

おすすめ

転載: www.cnblogs.com/haoworld/p/offer61-pu-ke-pai-zhong-de-shun-zi.html