1、前言
题目描述2、思路
如果使用二分查找一行行或者一列列查找,好像效率也还可以。但是最好的方式是利用矩阵的特性,找到一个点不同方向是递增和递减的点,比如右上角或者左下角。
比如选右上角,如果 matrix[row][col] > target,则直接 col--;否则 row++。直到找到这个数。
3、代码
class Solution {
public boolean findNumberIn2DArray(int[][] matrix, int target) {
if(matrix == null || matrix.length == 0 || matrix[0].length == 0){
return false;
}
int row = 0, col = matrix[0].length - 1;
while(row < matrix.length && col >= 0){
if(matrix[row][col] == target){
return true;
}else if(matrix[row][col] > target){
col--;
}else{
row++;
}
}
return false;
}
}
网友评论