方法一:采用二分查找法
class Solution {
public boolean findNumberIn2DArray(int[][] matrix, int target) {
if (matrix == null || matrix.length == 0 || matrix[0].length == 0)
return false;
for (int i = 0; i < matrix.length; i++) {
int left = 0;
int right = matrix[0].length - 1;
while (left <= right) {
int middle = (left + right) / 2;
if (matrix[i][middle] == target)
return true;
else if (matrix[i][middle] < target)
left = middle + 1;
else
right = middle - 1;
}
}
return false;
}
}
方法二:剑指Offer书中提及的寻求规律的方法
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 row = 0;
int col = cols - 1;
while(row < rows && col >= 0){
if(matrix[row][col] == target)
return true;
else if(matrix[row][col] > target)
col = col - 1;
else
row = row + 1;
}
return false;
}
}