タイトル説明
ランダムにカード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として使用することができます。
テストケース
- 機能テスト:描かれたカードは、王の一つ以上の大型を持って、カードのうち、王大きくありません。カードは、サブの外にあります。
- 特別な入力テスト: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() {
}
}