問題の説明:
2 次元配列 (各 1 次元配列は同じ長さ) では、各行は左から右へ昇順に並べ替えられ、各列は上から下へ昇順に並べ替えられます。関数を完成させ、二次元配列と整数を入力し、配列に整数が含まれているかどうかを判定してください。
アイデア:
配列の左下の要素から比較を開始します。ターゲットの整数がこの要素と等しい場合は true を返します。ターゲットの整数がこの要素より大きい場合は、x を右に移動します。ターゲットの整数が要素より小さい場合、y が上に移動され、操作が繰り返されます。
public class Solution {
public boolean Find(int target, int [][] array) {
int lenY = array.length;
int lenX = array[0].length;
boolean result = false;
if (array.length == 1) {
return result;
} else {
int x = 0;
int y = lenY - 1;
for (int i = 0; i < lenY + lenX; i++) {
if (target == array[y][x]) {
result = true;
break;
} else if (target > array[y][x] && x < lenX - 1) {
x += 1;
} else if (target < array[y][x] && y > 0) {
y -= 1;
}
}
}
return result;
}
}
知らせ:
- 空の 2 次元配列の列の長さは 1 です。