1.タイトル
LLは今日、トランプのデッキを買いに行ったところ、実際には2つの大きな王と2つの小さな王がいることに気づいたのでとても良い気分でした(デッキは元々54枚のカードでした)。彼はランダムに5枚のカードを引き、手をテストしてストレートを引くことができるかどうかを確認したかったので、可能であれば、スポーツ宝くじを購入することにしました。!「ハートエース、スペード3、リトルキング、ビッグキング、スクエアピース5」、「オーマイゴッド!」ストレートじゃない…LLは幸せじゃない、と思ってビッグ\リトルキングができると決心した任意の数と見なされ、Aは1、Jは11、Qは12、Kは13と見なされます。上記の5枚のカードは「1、2、3、4、5」(大王と小王はそれぞれ2と4と見なされます)、「とてもラッキー!」に変えることができます。LLはスポーツ宝くじを購入することにしました。ここで、このカードを使用して上記のプロセスをシミュレートし、LLの幸運を教えてください。カードがストレートを形成できる場合はtrueを出力し、そうでない場合はfalseを出力します。便宜上、サイズキングは0と見なすことができます。
2、分析とコード
1.判定間隔
(1)考える
まず第一に、カードにゼロ以外の繰り返し番号がある場合、それはストレートを作ることができません。
繰り返される数字がない場合は、0以外の最大値と最小値のみをカウントする必要があります.2つの間の差が4に等しい場合(この時点で入力するのに十分な0があります)、それは形成することができますまっすぐ。
(2)コード
public class Solution {
public boolean isContinuous(int [] numbers) {
if (numbers.length != 5)
return false;
int flag[] = new int[13];
for (int i = 0;i < 13; i++)
flag[i] = 0;
int minNum = 14, maxNum = 0;
for (int i = 0; i < 5; i++) {
if (numbers[i] == 0)
continue;
if (flag[numbers[i] - 1] != 0)
return false;
flag[numbers[i] - 1] = 1;
minNum = Math.min(minNum, numbers[i]);
maxNum = Math.max(maxNum, numbers[i]);
}
return ((maxNum - minNum) < 5);
}
}
(3)結果
実行時間:15ms、占有メモリ:9256k。
3、その他
何もありません。