一、题目描述
二、思路分析
2.1 分析
一开始只能想到暴力法。看了评论区还有另外一种方法,那就是从二维数组的最右上角或者最左边下角开始查找目标值,通过比较目标值和数组元素来控制行或列的变化来查找元素,最终得出结果。注意一下数组为空的特殊情况
2.2 图解
三、题解
class Solution {
/*
// 暴力法
public boolean findNumberIn2DArray(int[][] matrix, int target) {
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
if (matrix[i][j] == target) {
return true;
}
}
}
return false;
}
*/
public boolean findNumberIn2DArray(int[][] matrix, int target) {
int i = matrix.length - 1, j = 0;
while (i >= 0 && j < matrix[0].length) {
if (target < matrix[i][j]) {
i--;
} else if (target > matrix[i][j]) {
j++;
} else {
return true;
}
}
return false;
}
}