方法一:
class Solution {
public boolean findNumberIn2DArray(int[][] matrix, int target) {
if (matrix == null || matrix.length == 0) {
return false;
}
int n = matrix.length;
int m = matrix[0].length;
for (int s = 0; s <= (m + n - 2); s++) {
for (int i = 0; i < n; i++) {
if ((s - i) < m && (s - i) >= 0 && matrix[i][s - i] == target) {
return true;
}
}
}
return false;
}
}
方法二:
提示:从右上角开始,比它大的数都在下面,比它小的数都在左边
class Solution {
public boolean findNumberIn2DArray(int[][] matrix, int target) {
if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
return false;
}
int rows = matrix.length;
int cols = matrix[0].length;
int r = 0, c = cols - 1;
while (r <rows && c >= 0) {
if (matrix[r][c] == target) {
return true;
} else if (matrix[r][c] < target) {
r++;
} else {
c--;
}
}
return false;
}
}
效率更高