LeetCode 搜索二维矩阵
题目描述
编写一个高效的算法来判断
m x n矩阵中,是否存在一个目标值。该矩阵具有如下特性:
- 每行中的整数从左到右按升序排列。
- 每行的第一个整数大于前一行的最后一个整数。
示例:

输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3 输出:true
提示:
m == matrix.length
n == matrix[i].length
1 <= m, n <= 100
-104 <= matrix[i][j], target <= 104
一、解题关键词
二维矩阵
有序
二、解题报告
1.思路分析
- 每行有顺序,每列有顺序
- 二分 left right mid ,需要找到是否为边界
- 因为数据行 列 都有序 ,先找列 再找行数据
- 不能从中间找(二维数组,信息过多),要从下往上 或者从上往下找行数据
- 确定行数据之后,以此为起点 找列数据
2.时间复杂度
3.代码示例
class Solution {
//有顺序 二分
public boolean searchMatrix(int[][] matrix, int target) {
int rowLen = matrix.length - 1, colLen = 0;
while (rowLen >= 0 && colLen < matrix[0].length) {
int num = matrix[rowLen][colLen];
if (num == target) {
return true;
} else if (num > target){
rowLen --;
}else{
colLen ++;
}
}
return false;
}
}
4.知识点
本文介绍了一种高效算法,用于判断一个具有特定属性的二维矩阵中是否存在目标值。该算法利用了矩阵每行每列都是有序的特点,通过二分查找的方式进行搜索。详细介绍了算法的实现思路、时间复杂度,并提供了代码示例。
422

被折叠的 条评论
为什么被折叠?



