思想全在代码里注释了,来吧,come on
/**
* 从右上角进行搜索,如果target > matrix[i][j],则证明不在这一行,则i ++
* 如果target < matrix[i][j],则证明不在这一列,则j --
* 如果target = matrix[i][j],则返回
* @author mh
*
*/
public class Searcha2DMatrixII {
public boolean searchMatrix(int[][] matrix, int target) {
if(target < matrix[0][0] || target > matrix[matrix.length - 1][matrix[0].length - 1]){
return false;
}
int i = 0,j = matrix[0].length - 1;
while(i < matrix.length && j >= 0){
if(matrix[i][j] > target){
j --;
}
else if(matrix[i][j] < target){
i ++;
}
else{
return true;
}
}
//碰到边界,则返回false
return false;
}
}
本文介绍了一种高效的二维矩阵搜索算法,该算法能在O(n)的时间复杂度内完成搜索任务。通过对矩阵特性的利用,实现从右上角开始比较目标值与矩阵元素值,从而逐步缩小搜索范围。
210

被折叠的 条评论
为什么被折叠?



