題目:
面試題04. 二維數組中的查找
同:240. 搜索二維矩陣 II
題解:
1. 題解一:
2. 題解二:
代碼:
1. 代碼一:
/**
* 面試題04
*/
public class 面試題04 {
// 解法1:
public static boolean findNumberIn2DArray(int[][] matrix, int target) {
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[0].length; j++) {
if (matrix[i][j] == target) {
return true;
}
}
}
return false;
}
public static void main(String[] args) {
int matrix[][] = { { 1, 4, 7, 11, 15 }, { 2, 5, 8, 12, 19 }, { 3, 6, 9, 16, 22 }, { 10, 13, 14, 17, 24 },
{ 18, 21, 23, 26, 30 } };
int target1 = 5;
int target2 = 20;
boolean res1 = findNumberIn2DArray(matrix, target1);
boolean res2 = findNumberIn2DArray(matrix, target2);
System.out.println(res1 + " " + res2);
}
}
2. 代碼二:
/**
* 面試題04
*/
public class 面試題04 {
// 解法2:
public static boolean findNumberIn2DArray(int[][] matrix, int target) {
if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
return false;
}
int i = 0;
int j = matrix[0].length - 1;
while (i < matrix.length && j >= 0) {
if (matrix[i][j] == target) {
return true;
} else if (matrix[i][j] < target) {
i++;
} else if (matrix[i][j] > target) {
j--;
}
}
return false;
}
public static void main(String[] args) {
int matrix[][] = { { 1, 4, 7, 11, 15 }, { 2, 5, 8, 12, 19 }, { 3, 6, 9, 16, 22 }, { 10, 13, 14, 17, 24 },
{ 18, 21, 23, 26, 30 } };
int target1 = 5;
int target2 = 20;
boolean res1 = findNumberIn2DArray(matrix, target1);
boolean res2 = findNumberIn2DArray(matrix, target2);
System.out.println(res1 + " " + res2);
}
}