二维数组中的查找(中等难度)

简介: 二维数组中的查找(中等难度)

目录

题目概述(中等难度)

思路与代码

思路展现

方法1 暴力法

代码示例

方法2 标志数

代码示例

题目概述(中等难度)



题目链接:


二维数组中的查找


思路与代码

思路展现

方法1 暴力法

如果不考虑二维数组排好序的特点,则直接遍历整个二维数组的每一个元素,判断目标值是否在二维数组中存在。


依次遍历二维数组的每一行和每一列。如果找到一个元素等于目标值,则返回 true。如果遍历完毕仍未找到等于目标值的元素,则返回 false。


代码示例

class Solution {
    public boolean findNumberIn2DArray(int[][] matrix, int target) {
        if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
            return false;
        }
        int rows = matrix.length, columns = matrix[0].length;
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < columns; j++) {
                if (matrix[i][j] == target) {
                    return true;
                }
            }
        }
        return false;
    }
}

时间复杂度:O(nm)二维数组中的每个元素都被遍历,因此时间复杂度为二维数组的大小。

空间复杂度:O(1)

方法2 标志数

这块建议大家直接看k神的解答,我直接把解答放在了下面:

K神解答

代码示例

class Solution {
    public boolean findNumberIn2DArray(int[][] matrix, int target) {
       int i = matrix.length-1;
       int j = 0;
       while(i >= 0 && j < matrix[0].length) {
          if(matrix[i][j]>target){
              i--;
          }else if(matrix[i][j]<target){
              j++;
          }else {
              return true;
          }
       }
          return false;
       } 
}

时间复杂度:O(n+m)。访问到的下标的行最多增加 n 次,列最多减少 m 次,因此循环体最多执行 n + m 次。

空间复杂度:O(1)




相关文章
|
5月前
|
算法 测试技术 C#
二分查找:LeetCode2035:将数组分成两个数组并最小化数组和的差
二分查找:LeetCode2035:将数组分成两个数组并最小化数组和的差
|
5月前
【错题集-编程题】删除相邻数字的最大分数(动态规划 - 线性 dp)
【错题集-编程题】删除相邻数字的最大分数(动态规划 - 线性 dp)
|
5月前
|
算法 测试技术 C#
【数学】LeetCode1526: 形成目标数组的子数组最少增加次数
【数学】LeetCode1526: 形成目标数组的子数组最少增加次数
|
存储 算法 C++
二维数组中的查找(两种解法,各有千秋)
二维数组中的查找(两种解法,各有千秋)
248 0
二维数组中的查找(两种解法,各有千秋)
排序数组中只出现一次的数字(中等难度,三种方法)
排序数组中只出现一次的数字(中等难度,三种方法)
108 0
排序数组中只出现一次的数字(中等难度,三种方法)
|
算法
二叉树中和为某一值的路径(中等难度)
二叉树中和为某一值的路径(中等难度)
81 0
二叉树中和为某一值的路径(中等难度)
数组中数字出现的次数(中等难度)
数组中数字出现的次数(中等难度)
88 0
数组中数字出现的次数(中等难度)
从上到下打印二叉树 III(中等难度)
从上到下打印二叉树 III(中等难度)
75 0
从上到下打印二叉树 III(中等难度)
|
存储 算法
全排列(中等难度)
全排列(中等难度)
73 0
全排列(中等难度)
|
算法 索引
数组中重复的数字(简单难度)
数组中重复的数字(简单难度)
81 0
数组中重复的数字(简单难度)