题目:
- 编写一个高效的算法来搜索矩阵 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;
}