题目:
- 编写一个高效的算法来搜索矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:
- 每行的元素从左到右升序排列。
- 每列的元素从上到下升序排列。
实现:
1. main方法
public static void main(String[] args) {
int[][] matrix = {
{1, 4, 7, 11, 15},
{2, 5, 8, 12, 19},
{3, 6, 9, 16, 22},
{10, 13, 14, 17, 24},
{18, 21, 23, 26, 30}
};
boolean b = method1(matrix, 5);
System.out.println(b);
method2(matrix, 5);
}
2. 方式一:暴力破解(不推荐)
private static boolean method1 ( int[][] matrix, int i){
int row = matrix.length;
int col = matrix[0].length;
for (int j = 0; j < row; j++) {
for (int k = 0; k < col; k++) {
if (matrix[j][k] == i) {
System.out.println("way1: {" + j + "," + k + "}");
return true;
}
}
}
return false;
}
}
3. 方式二: 二叉树原理查找
private static boolean method2(int[][] matrix, int target) {
int row = matrix.length - 1;
int col = 0;
while (col < matrix[0].length && row >= 0) {
if (matrix[row][col] == target) {
System.out.println("way2: {" + row + "," + col + "}");
return true;
} else if (matrix[row][col] > target) {
row--;
} else if (matrix[row][col] < target) {
col++;
}
}
return false;
}