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

news/2024/11/19 9:34:50/

剑指 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 <= m <= 1000

二、题解

方法一:暴力破解

class Solution {public boolean findNumberIn2DArray(int[][] matrix, int target) {//判断二位数组中值为空if ((matrix == null || matrix.length == 0) || (matrix.length == 1 && matrix[0].length == 0)) {return false;}boolean res = false;for (int i = 0; i < matrix.length; i++) {for (int j = 0; j < matrix[i].length; j++) {if (target == matrix[i][j]) {res = true;}}}return res;}
}

方法二:优化解法

思路:从右上角往左下角找

    /*** 优化解法* 思路:从右上角往左下角找** @param matrix* @param target* @return*/public boolean findNumberIn2DArray(int[][] matrix, int target) {//判断二维数组值为空if ((matrix == null || matrix.length == 0) || (matrix.length == 1 && matrix[0].length == 0)) {return false;}boolean res = false;int i = 0, j = matrix[0].length - 1;while (i < matrix.length && j >= 0) {if (target == matrix[i][j]) {res = true;break;} else if (target < matrix[i][j]) {j--;} else {i++;}}return res;}


剑指 Offer 03. 数组中重复的数字
剑指 Offer 04. 二维数组中的查找
剑指 Offer 05. 替换空格
剑指 Offer 06. 从尾到头打印链表
剑指 Offer 07. 重建二叉树
剑指 Offer 09. 用两个栈实现队列
剑指 Offer 10- I. 斐波那契数列
剑指 Offer 10- II. 青蛙跳台阶问题
剑指 Offer 11. 旋转数组的最小数字
剑指 Offer 12. 矩阵中的路径



声明:
        题目版权为原作者所有。文章中代码及相关语句为自己根据相应理解编写,文章中出现的相关图片为自己实践中的截图和相关技术对应的图片,若有相关异议,请联系删除。感谢。转载请注明出处,感谢。


By luoyepiaoxue2014

B站: https://space.bilibili.com/1523287361 点击打开链接
微博: http://weibo.com/luoyepiaoxue2014 点击打开链接


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

相关文章

LeetCode算法之--二叉树系列

点赞收藏&#xff0c;以防遗忘 本文【程序大视界】已收录&#xff0c;关注免费领取互联网大厂学习资料&#xff0c;添加博主好友进群学习交流&#xff0c;欢迎留言和评论&#xff0c;一起交流共同进步。 【一】前言 二叉树也是面试算法的常见题型&#xff0c;通常程序会自定义…

【数据结构与算法】试卷 1(含答案)

一、选择题 1. 计算机算法指的是&#xff08;&#xff09; A. 计算方法 B. 排序方法 C. 解决问题的有限运算序列 D. 调度方法 2. 表达式 a*(bc)-d 的后缀表达式是&#xff08;&#xff09; A. abcd- B. abc*d- C. abc*d- D. -*abcd 3. 一个栈的入栈序列是a,b,c,d,e&#xff0c;…

卓海科技冲刺创业板:拟募资5.47亿 相宇阳控制52.9%股权

雷递网 雷建平 12月20日无锡卓海科技股份有限公司&#xff08;简称&#xff1a;“卓海科技”&#xff09;日前递交招股书&#xff0c;准备在深交所创业板上市。卓海科技计划募资5.47亿元&#xff0c;其中&#xff0c;1.04亿元用于半导体前道量检测设备扩产项目&#xff0c;1.84…

MyBatis学习 | 全局配置文件

文章目录一、简介二、各个标签2.1 properties&#xff08;属性&#xff09;2.2 settings&#xff08;设置&#xff09;2.3 typeAliases&#xff08;类型命名&#xff09;2.4 typeHandlers&#xff08;类型处理器&#xff09;2.5 plugins&#xff08;插件&#xff09;2.6 enviro…

Exponentiation

Exponentiation is a mathematical operation, written as bn, involving two numbers, the base b and the exponent or power n, and pronounced as “b (raised) to the (power of) n”.[1] When n is a positive integer, exponentiation corresponds to repeated multipli…

四、二维线实体类(AcGeLinearEnt2d)

四、二维线实体类&#xff08;AcGeLinearEnt2d&#xff09; 继承关系&#xff1a;为二维曲线类&#xff08;AcGeCurve2d&#xff09;的派生类&#xff0c;见第一条类图 派生类 直线&#xff1a;AcGeLine2d&#xff0c;对应数据库类型AcDbXline 线段&#xff1a;AcGeLineSeg2d&a…

0基础转软件测试该学些什么?

前言 有很多人员会不断问自己&#xff0c;自己到底要不要学测试&#xff0c;或者要不要转行做测试&#xff0c;测试的职业发展到底怎么样&#xff1f;如果你还在迷茫&#xff0c;在到处找各种大牛问类似的问题&#xff0c;我希望这篇文章&#xff0c;你看完能够结束你的这个烦…

JDBC编程步骤、JDBC API详解和数据库连接池

前言&#xff1a; JDBC 就是使用Java语言操作关系型数据库的一套API &#xff0c;全称&#xff1a;( Java DataBase Connectivity ) Java 数据库连接。官方&#xff08;sun公司&#xff09;定义的一套操作所有关系型数据库的规则&#xff0c;即 接口各个数据库厂商去实现这套…