问题:一个m*n的矩阵,从左到右从上到下都是递增的,给一个数elem,求是否在矩阵中?
杨氏矩阵是一个二维数组,特点是每行从左到右递增,每列从上往下递增。
“定位法”具体的java实现代码:
public static int find(int[][] matrix, int rows, int columns, int target) {
int row = 0; // 先以右上角的节点为开始
int column = columns - 1;
while (row < rows && column >= 0) { // 循环结束的条件
if (target == matrix[row][column]) {
return matrix[row][column]; //找到之后返回结果
} else if (target < matrix[row][column]) {
column--; // 节点比基准点小,target所在列可以去除
} else {
row++; // 节点比基准点大,target所在行可以去除
}
}
return -1;
}