超实用的剔除法解决二维矩阵中的搜索问题
一.问题描述
二.解决思路
这道题很多人都是将二维数组映射到一维数组中,然后利用二分查找的方法去解决。但是在本题中利用剔除法获取更简单,通过剔除行或列来进行定位。
(1)首先判断边界条件;
(2)之后通过每行的最后一个值来定位在哪一行;
(3)确定行之后遍历这一行,查询这一行中是否有这个值。
注: 对于大多数有关矩阵搜索的题目都可以这样做
三、代码
class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
if(matrix == null){
return false;
}
int m = matrix.length;
int n = matrix[0].length;
if(target < matrix[0][0] || target>matrix[m-1][n-1]){
return false;
}
int i = 0;
while(target > matrix[i][n-1]){
i++;
}
if (i== m){
return false;
}
for(int y = 0 ; y < n; y++){
if(matrix[i][y] == target){
return true;
}
}
return false;
}
}
四、结果