1,问题简述
编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:
每行的元素从左到右升序排列。
每列的元素从上到下升序排列
2,示例
现有矩阵 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]
]
给定 target = 5,返回 true。
给定 target = 20,返回 false。
3,题解思路
找规律
4,题解程序
public class SearchMatrixTest {
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}
};
int target = 5;
boolean searchMatrix = searchMatrix(matrix, target);
System.out.println("searchMatrix = " + searchMatrix);
}
public static boolean searchMatrix(int[][] matrix, int target) {
if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
return false;
}
int colLength = matrix[0].length - 1;
int row = 0;
while (row < matrix.length && colLength >= 0) {
if (matrix[row][colLength] == target) {
return true;
} else if (matrix[row][colLength] < target) {
row++;
} else {
colLength--;
}
}
return false;
}
}
5,题解程序图片版
6,总结
这些日子写过的文章,废话变得少了,这或许就是成长吧。写了一年的文章了,整体输出文章内容基本上都是以java为主,大概篇幅内容都是围绕着数据库,JDK源码,mybatis,spring,springboot的框架来进行输出的,一年有所成长,有所失去,快到十一了,去年也是十一的时候开始了文章输出的,一年的时间过得好快啊