随笔 - 384  文章 - 0  评论 - 0  阅读 - 13万

剑指offer04(Java)二维数组中的查找(中等)

题目:

在一个 n * m 的二维数组中,每一行都按照从左到右 非递减 的顺序排序,每一列都按照从上到下 非递减 的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

示例:

现有矩阵 matrix 如下:

限制:

0 <= n <= 1000

0 <= m <= 1000

本题与:力扣240(java&python)-搜索二维矩阵 II(中等)相同

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

方法一:暴力求解,直接遍历二维数组中的每个元素,并与target相比较。

复制代码
 1 class Solution {
 2     public boolean findNumberIn2DArray(int[][] matrix, int target) {
 3          //判空
 4         if (matrix.length == 0 || matrix[0].length == 0) return false;
 5         int n = matrix.length;
 6         int m = matrix[0].length;
 7         //直接遍历每个元素
 8         for (int[] rows : matrix){
 9             //遍历每一行中的每个元素
10             for (int num : rows){
11                 if (num == target) return true;
12             }
13         }
14         return false;
15     }
16 }
复制代码

方法二:坐标轴法:参考k神的题解,每次排除一行

在当前索引不越界的情况下:从矩阵 matrix 左下角元素(索引设为 (i, j) )开始遍历,并与目标值对比:

①当 matrix[i][j] > target 时,那么[i,j]右边的所有元素都大于目标值,执行 i-- ,即消去第 i 行后面的所有元素;
②当 matrix[i][j] < target 时,那么[i,j]上面的所有元素都小于目标值,执行 j++ ,即消去第 j 列上面的所有元素;
③当 matrix[i][j] = target 时,返回true。

当行索引或列索引越界时,则代表矩阵中无目标值,返回 false 。

复制代码
 1 class Solution {
 2     public boolean findNumberIn2DArray(int[][] matrix, int target) {
 3          //判空
 4         if (matrix.length == 0 || matrix[0].length == 0) return false;
 5         //n:行;m:列
 6         int n = matrix.length, m = matrix[0].length;
 7         int i = n - 1, j = 0;
 8         while (i >= 0 && j < m){
 9             if (matrix[i][j] > target){
10                 i--;
11             }else if (matrix[i][j] < target){
12                 j++;
13             }else {
14                 return true;
15             }
16         }
17         return false;
18     }
19 }
复制代码
posted on   我不想一直当菜鸟  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示