私は2次元配列(すべての行の要素が左から右に向かって増加するように配列され、各列の要素は上から下に向かって増加するように配列されています)とintを返し、intが2D配列内にあるかどうかを調べます。ネストされたループを使いたいのですが、それはO(N^2)時間になるでしょう。したがって、intがサブ配列の1つで最初のものよりも小さく、最後のものよりも大きければテストし、そうであれば次のサブ配列に移動する条件を作成しようとしています。ここに私が持っているものがあります:値がO(n)時間の2D配列に含まれているかどうかを調べる方法は何ですか?
static boolean has(int number, int[][] a) {
int q = 0;
boolean c = false;
for (int i = 0; i < a[q].length-1; i++){
if ((number < a[i][q]) || (number > a[a[j].length-1][i])){
q++;
}
else if (number == a[i][q]){
c = true;
break;
}
else c = false;
}
return c;
}
は、いくつかの助けを使用することができます。このメソッドはコンパイルされますが、私にoutOfBoundsありがとう!
例外が発生した場合は、スタックトレースを送信してください。 – khelwood
どこで見つけることができますか? – user311302
右下 "outOfBounds" – shmosel