Java プログラミングについて非常に一般的な質問があります。
数値のリストが連続しているかどうかをチェックする関数を書きたいと思います。
[1, 2, 3, 4, 5] と言うと、関数は true を返します。
[1, 3, 4, 9, 10] の場合、関数は false を返します。
誰でも私を助けることができますか?
ありがとうございます!
Java プログラミングについて非常に一般的な質問があります。
数値のリストが連続しているかどうかをチェックする関数を書きたいと思います。
[1, 2, 3, 4, 5] と言うと、関数は true を返します。
[1, 3, 4, 9, 10] の場合、関数は false を返します。
誰でも私を助けることができますか?
ありがとうございます!
リストの各要素を調べるループを作成します。
リスト内の各位置について、リスト i + 1 がリストi + 1 と等しいi
ことをテストします。
演習として自分でコーディングできます。(エッジケースに対処することを忘れないでください...)
更新: ... この問題を学習課題として扱っている人向け。
単純な直接実装アプローチがおそらく最良のアイデアです。例 @Joe の最終回答。ただし、単純なアプローチが常にうまく機能するとは限りません...またはまったく機能しません。
List
実装にはget
、O(N)
. それはO(N^2)
全体的なアルゴリズムにつながります。list.get(i)
、オプションではない場合があります。このような場合、反復子を使用してリストを 1 回通過するアルゴリズムを実装できます。変数などに「前の要素」を保持する必要があります。
Stephen Cが言ったように、それは非常に単純な論理です
int a[] = { 1, 2, 3, 4, 5,7 };
boolean flag = true;
for (int i = 0; i < a.length - 1; i++) {
if (a[i + 1] != a[i] + 1) {
flag = false;
break;
}
}
System.out.println("Flag is " + flag);
ロジックは単純です。最初の数値を取得して、次の値と一致するかどうかを確認するだけです。そのように、隣接する値をチェックします。いずれかの時点で条件が失敗した場合は中断します。すべての if 条件が true の場合、リストはシーケンシャルになります。