📅  最后修改于: 2023-12-03 15:23:29.242000             🧑  作者: Mango
在二维矩阵中搜索指定的元素是否存在,如果存在返回其所在的位置,否则返回-1。本文将介绍如何使用Java实现该算法。
一般情况下,我们在二维矩阵中搜索元素的思路是从左上角或者右下角开始查找,逐步缩小搜索范围。
以从左上角开始查找为例,具体思路如下:
对于从右下角开始查找,也有类似的思路。
public class MatrixSearch {
public static int searchMatrix(int[][] matrix, int target) {
if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
return -1;
}
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 row * cols + col;
} else if (matrix[row][col] > target) {
col--;
} else {
row++;
}
}
return -1;
}
}
该算法时间复杂度为$O(m+n)$,其中$m$和$n$分别为矩阵的行数和列数。