Open songyy5517 opened 2 years ago
思路:双指针,对角元素作为基准
复杂度分析
class Solution {
public boolean findNumberIn2DArray(int[][] matrix, int target) {
// 思路:双指针,从右上角元素开始查找
// 1. 异常处理
if (matrix == null || matrix.length == 0 || matrix[0].length == 0)
return false;
// 2. 定义双指针
int row = 0;
int col = matrix[0].length - 1;
// 3. 遍历二维数组
while (row <= matrix.length - 1 && col >= 0){
if (target == matrix[row][col])
return true;
else if (target > matrix[row][col])
row ++;
else
col --;
}
// 4. 不存在
return false;
}
}
2022/5/1 2022/12/30 2023/9/5 2024/3/20
在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
示例: 现有矩阵 matrix 如下:
给定 target = 5,返回 true。 给定 target = 20,返回 false。
分析 题干关键信息:二维数组;从左到右递增;从上到下递增。 从对角元素入手。