(数组与矩阵) 剑指 Offer 04. 二维数组中的查找 ——【Leetcode每日一题】

news/2025/1/15 21:58:16/

❓ 剑指 Offer 04. 二维数组中的查找

难度:中等

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

示例:

现有矩阵 matrix 如下:

[
[1, 4, 7, 11, 15],
[2, 5, 8, 12, 19],
[3, 6, 9, 16, 22],
[10, 13, 14, 17, 24],
[18, 21, 23, 26, 30]
]

给定 target = 5,返回 true。
给定 target = 20,返回 false。

限制

  • 0 < = n < = 1000 0 <= n <= 1000 0<=n<=1000
  • 0 < = m < = 1000 0 <= m <= 1000 0<=m<=1000

注意:本题与 240. 搜索二维矩阵 II 相同。

💡思路:

由于每行的元素从左到右升序排列,每列的元素从上到下升序排列,所以对于矩阵中的任意一个数都比其左上角上的数大,都比其右下角的小,所以target如果在两个对角之间,则一定在该对角之间的左下角或右上角;

  • 从而我们可以在矩阵的左下角开始判断,答案一定在右上角
    • 如果当前数等于target,则找到,返回true
    • 如果当前数小于target,则往右查找,列号 +1;
    • 如果当前数大于target,则往上查找,行号 -1

🍁代码:(C++、Java)

C++

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

Java

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

🚀 运行结果:

在这里插入图片描述

🕔 复杂度分析:

  • 时间复杂度 O ( n + m ) O(n + m) O(n+m),在搜索的过程中,如果我们没有找到 target,那么我们要么将 i 减少 1,要么将 y 增加 1。由于 (i, j) 的初始值分别为 (n - 1, 0),因此 i 最多能被减少 n 次,j 最多能被增加 m 次,总搜索次数为 n+m。在这之后,ij 就会超出矩阵的边界。

  • 空间复杂度 O ( 1 ) O(1) O(1)

题目来源:力扣。

放弃一件事很容易,每天能坚持一件事一定很酷,一起每日一题吧!
关注我LeetCode主页 / CSDN—力扣专栏,每日更新!

注: 如有不足,欢迎指正!


http://www.ppmy.cn/news/911728.html

相关文章

绝对值得收藏的十位电影配乐大师 (中)

TOP5&#xff1a;如日中天的配乐大师——汉斯.季默Hans Zimmer 汉斯.季默是最近最如日中天、炙手可热的电影配乐大师之一&#xff0c;《角斗士》配乐尽管在奥斯卡提名中被《卧虎藏龙》夺去&#xff0c;但影片中令人窒息的英雄主义诗篇的音乐给人留下非常深刻的印象。 汉斯…

轻音乐

轻音乐&#xff0c;是指那种风格轻松、活泼的音乐&#xff0c;它是能给人以愉悦和抒情感&#xff0c;优美动听、通俗易懂的音乐。所谓“轻”&#xff0c;是指与庄重的严肃音乐对比而言。舞曲、进行曲、小夜曲比奏鸣曲、交响曲更“轻”&#xff1b;轻歌曲、抒情歌曲、诙谐歌曲比…

总觉得晚上的时间

总觉得晚上的时间&#xff0c;要好好珍惜。 晚上杂事不少&#xff0c;所以很久没有静下心来听音乐了。 不关注流行音乐&#xff0c;也不知去哪寻找特别对自己口味的音乐类型&#xff0c;以往喜欢重金属&#xff0c;来去就听一下Rammstein或Guns nroses等&#xff0c;特别是Ramm…

打篮球,听摇滚,敲键盘也能是人生赢家。程序员访谈(三)

点击上方关注我们&#xff0c;让小care关爱你&#xff01; 自从有了人类的存在&#xff0c;就处处存在着偏见。总有些人认为&#xff0c;程序员只会“敲代码”跟“修电脑”。 其实有些程序员可能并不会修电脑&#xff0c;而有些程序员也是一个很酷的人。 走近生活&#xff0c;梦…

【linux内核】查看和清空kernel日志

用dmesg 查看 dmesg dmesg|tail -n 8 清空 dmesg -c 用/var/log/kern.log 查看 cat /var/log/kern.log 清空 >/var/log/kern.log 参考&#xff1a; Linux 命令&#xff08;160&#xff09;—— dmesg 命令_dmesg命令详解_恋喵大鲤鱼的博客-CSDN博客 linux kernel…

计算机语言词汇量,词汇量最多的10种语言,会一种算你赢!

原标题&#xff1a;词汇量最多的10种语言&#xff0c;会一种算你赢&#xff01; 沪江法语君按&#xff1a;我会……种。 Pas forcment la langue la plus difficile apprendre (quoi que) mais celle dont les dictionnaires sont les plus pais. Le franaisest-il dans le cl…

Native Instruments Guitar Rig 5 Player WiN-MAC 免费的电吉他效果器

免费、可扩展的效果器引擎&#xff0c;配备一个放大器&#xff0c;17种音响效果&#xff0c;13个效果器和调节器。简单易用。 免费的箱头模拟以及效果器机架 基于GUITAR RIG 5 PRO 箱头模拟将伴随着成套的箱体&#xff0c;3款效果器以及50个随时可用的预设。 这也包含着 KOMPLE…

【电子学会】2023年05月图形化四级 -- 计算圆的面积和周长

计算圆的面积和周长 编写程序计算圆的面积和周长。输入圆的半径&#xff0c;程序计算出圆的面积和周长&#xff0c;圆的面积等于3.14*半径*半径&#xff1b;圆的周长等于2*3.14*半径。 1. 准备工作 &#xff08;1&#xff09;保留舞台中的小猫角色和白色背景&#xff1b; 2…