/**
* 法一(Z字形查找)
* 1. 思路
* (1)从右上角看是一颗二叉搜索树
* (2)二叉搜索树向左数字变小,向右数字变大
* (3)matrix从右上角开始,每次都是向左数字会变小,向下数字会变大
* 2. 复杂度
* (1)时间复杂度 O(m+n),m表示行个数,n表示列个数
* (2)空间复杂度 0(1)
*
* @param matrix
* @param target
* @return
*/
public boolean searchMatrix(int[][] matrix, int target) {
if (matrix == null || matrix.length == 0) {
return false;
}
int row = 0, col = matrix[0].length - 1; // 从右上角开始
while (row < matrix.length && col >= 0) {
if (matrix[row][col] == target) {
return true;
} else if (matrix[row][col] < target) {
row++;
} else {
col--;
}
}
return false;
}
/**
* 240. 搜索二维矩阵 II
*/
lay.showTitle(240);
Solution240 sol240 = new Solution240();
int[][] matrix240 = new int[][]{{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}};
arrayOpt.showIntTwoDimArray(matrix240, matrix240.length);
System.out.println(sol240.searchMatrix(matrix240, 5));
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- hzar.cn 版权所有 赣ICP备2024042791号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务