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.知识点