剑指offer —— 二维数组中的查找

SRAM compiler选项中 Soft Error Repair (SER) 引起的瞬时故障,可能会影响 SRAM 中存储的数据。SER 功能通过某种机制检测并修复这些错误,从而提高存储器的可靠性。在 SRAM 编译器中, 阅读详情

问题描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

问题分析:
两种方案:
方案一:因为矩阵每一行从左到右都是递增的,可以对矩阵的每一行进行二分查找。
方案二:因为矩阵从左到右是递增的,同时从上到下也是递增的,可以发现在矩阵左下角处是一个非常巧妙的位置,右边的数比其大,上边的数比其小,所以由此位置出发,查找数大于此位置,右移,查找数小于此位置,上移。

测试:
输入一个矩阵:1,2,4;3,5,7;6,7,8
判断是否包含2。
查找过程如图:

辅助图注释:
蓝色背景:被查找过的数
箭头:每趟查找的指向位置
这里写图片描述

下面给出代码实现:

package com.java.question;

/**
 * 在一个二维数组中,每一行都按照从左到右递增的顺序排序,
 * 每一列都按照从上到下递增的顺序排序。请完成一个函数,
 * 输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
 * @author zxy
 *
 */
public class Q_01 {
	
	/**
	 * 方法一
	 * 矩阵每一行进行二分查找
	 * @param target
	 * @param array
	 * @return
	 */
	public static boolean find(int target, int [][] array){
		//对矩阵的每一行使用二分查找
		for(int i=0;i<array.length;i++){
			int low=0;
			int high=array[i].length-1;
			while(low<=high){
				int mid=(low+high)/2;
				if(target<array[i][mid]){
					high=mid-1;
				}else if(target>array[i][mid]){
					low=mid+1;
				}else{
					return true;
				}
			}
		}
		return false;
	}
	
	/**
	 * 方法二
	 * 根据递增矩阵的特性,由左下角开始查找
	 * @param target
	 * @param array
	 * @return
	 */
	public static boolean find_02(int target, int [][] array) {
		//指向矩阵的左下角
		int x=array.length-1; //横坐标
		int y=0; //纵坐标
		
		//根据矩阵特性 以此为起点 target元素小于指针元素,横坐标上移,target元素大于指针元素,纵坐标右移
		while(x>=0 && y<=array[0].length-1){
			if(target<array[x][y]){
				x--;
			}else if(target>array[x][y]){
				y++;
			}else{
				return true;
			}
		}
		return false;
    }
	
	/**
	 * 测试
	 * @param args
	 */
	public static void main(String[] args) {
		int[][] A=new int[][]{{1,2,4},{3,5,7},{6,7,8}};
		System.out.println(find_02(3, A));
	}

}

PostgreSQL面试题及详细答案120道(101-120) 本文针对PostgreSQL数据库提供全面的性能优化方案,涵盖10个关键面试题解析。主要内容包括:1)并发参数调优(max_connections、worker_processes);2)缓存设置(effective_cache_size);3)WAL日志优化;4)慢查询监控与日志配置;5)会话管理与阻塞处理;6)高写入场景优化策略;7)存储类型参数调整;8)自动清理机制配置;9)大表DDL操作避坑指南;10)性能瓶颈诊断方法论。对DBA和开发者具有实操指导价值 阅读详情

相关推荐

保姆级教程:手把手教你从ENSEMBL官网下载GRCh38/GRCh37的GTF注释文件(附网址规律总结)

本文提供从ENSEMBL官网下载GRCh38/GRCh37的GTF注释文件的详细教程,包括路径解析、版本号确定和下载命令示例。特别解析了GRCh37的特殊存储结构,并分享批量下载、文件校验等高级技巧,帮助生物信息学研究者高效获取基因组注释文件。

weixin_29289821的博客 204

剑指offer(三):二维数组中的查找 递增数组 C 和C++实现

题目:在一个递增二维数组中查找是否含有某元素 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路: 1. 将二维数组传入找到函数中3.从二维数组传入右上角的数字开始查找: (1)若右上角数字== num,返回true,由于数组的递增特性 (2)若右上角数字&lt;nu...

Mohican的博客 1027

【亲测可用!】阿里达摩院开源实时数字人对话VideoChat本地部署教程(8G显存可跑)

本文主要记录在部署阿里达摩院开源实时数字人对话VideoChat时遇到的问题,希望对各位技术开发或爱好者有所帮助!

波点兔的博客 3892

剑指offer-03:二维数组(行列递增)的查找

一个二维数组中,每一行都按照从左到右递增的顺序排列,每一列都按照从上往下递增的顺序排列。完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 初看题目,容易想到既然是有序数组,可按二分的思想查找。选取某个数字刚和和要查数相等时返回;选取数字小于要查找的数字,查找放到当前位置的右方或者下方;若大于要查找的数字,查找放在当前位置的上方或者左方。然而分区域后,情况变得复杂,要查找的区

鸟恋旧林的博客 2198

树莓派视觉小车实战:OpenCV驱动的智能物体追踪系统

本文详细介绍了如何从零开始构建一个基于树莓派的智能视觉小车,实现物体跟踪功能。通过OpenCV进行图像处理,结合颜色与轮廓识别算法,让小车能够实时锁定并追踪特定目标。内容涵盖硬件搭建、软件环境配置、核心代码解析及运动控制逻辑,为创客和开发者提供了完整的实战指南。

weixin_29047545的博客 143

SAP Fiori Launchpad 上看不到任何 tile 应该怎么办?

中心UI组件是一个框架,为所有SAPFiori应用程序提供公共基础设施SAPFiorilaunchpad是所有SAPFioriUI的基础,并为SAPFiori应用程序提供基本功能,如登录,界面大小,应用程序之间的导航,和基于角色的应用程序目录。ABAP前端服务器包含所有基础设施组件,用于为客户端生成SAPFiori应用程序特定的UI,并与SAPBusinessSuite后端系统通信。SAPFiori应用程序的处理过程如下首先,客户端加载SAPFiori应用程序的界面。...

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 941

【剑指offer题解】二维数组中的查找

前言 众所周知,对于面试而言,《剑指offer》是一本“好书”。 如果你和我一样是个算法菜鸡,那么最推荐的是先把剑指offer的题目搞明白,其次再去刷LeetCode等习题,这样对于面试突击非常有用,因为面试官最常考的算法题都在这本书里。 如果你发现看这本书很吃力,可以先直接参考些网上的代码,照着抄一遍,理解下算法题是应该解题,多抄几道题目,你就对算法题的做法有感觉了,这个高考做固定套路数学题是...

蛮三刀酱 598

YOLOv11改进策略【注意力机制篇】| SE、CBAM、ECA、CA、Swin Transformer等注意力机制全面解析与应用

本文详细介绍了五种主流的注意力机制及其在YOLOv11中的应用。通过合理的模块选择和位置部署,注意力机制能够显著提升目标检测性能。

QQ_778132974的博客 873

剑指Offer 二维数组中的查找

**&amp;lt;本文为作者原创,转载请注明出处&amp;gt;** 剑指Offer 二维数组中的查找 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 题目分析 题目中明确描述数组从左至右从上至下都是递增的顺序,所以一眼就能看出来这是个...

weixin_43207320的博客 228

小秋SLAM入门实战ubuntu所有文章汇总

ubuntu 终端如何停止快速打印的输出以及恢复命令 ubuntu 终端如何快速打开当前路径下的图形化窗口界面? killall -9用途用法 ps -xu | grep这个命令的用途 linux 下 top命令显示的是内存是堆内存吗? zip分割和合并 关闭除当前 GNOME 终端窗口以外的所有其他 GNOME 终端窗口 如何在安装系统后设置短密码 【如何使用getrusage获取消耗的CPU时间和进程使用的最大物理内存】 【webots安装使用教程】 Linux系统下查看当前运行的进程和线程的几种方法

小秋 AI SLAM 入门实战教程 1403

用Playwright MCP让AI帮你完成所有浏览器自动化

Playwright MCP(Model Context Protocol)是微软基于 Playwright 框架推出的 AI 浏览器自动化新协议。它通过结构化快照数据和自然语言指令结合大型语言模型(如 GPT),实现无需编码的网页交互。无论你是要测试登录流程、抓取价格数据,还是用 AI 远程控制浏览器,Playwright MCP 都能大幅降低门槛,让“说人话”也能驱动自动化脚本。本篇将从功能介绍、技术架构、使用方法到实际场景,带你全面理解这一自动化革命。

todoitbo的博客 3万+

【剑指offer】——二维数组中的查找

人人都说剑指offer上面的题很经典,那这篇文章,就来好好研究一下这道二维数组中的查找问题吧~ 一、题目描述 二、相关知识补充 其实光是做这道题,没有什么难点,但是做这道题我想引出一个关于vector知识的补充 1、基本概念 Vector容器与array非常相似,区别就在于空间使用的灵活性,Array是静态控件,一旦配置过后就不能更改。Vector是动态空间,随着元素的增加,他的内部机制会自动的...

qq_43412060的博客 142

ofd转pdf报错:org.ofdrw.reader.ZipUtil.unZipFileByApacheCommonCompress【已解决】

ofd转pdf报错:java.lang.NoClassDefFoundError:org/apache/commons/io/function/IOIterator at org.ofdrw.reader.ZipUtil.unZipFileByApacheCommonCompress,java.lang.NoSuchMethodError:org.apache.commons.compress.archivers.zip.ZipArchiveInputStream.getNextEntry()

黄团团的个人博客 1283

剑指offer算法题001:二维数组中的查找

求职面试过程中,数据结构和算法是必考知识点,考虑到剑指offer算法题在面试中的高频出现,今天开始先和大家一起刷一遍剑指offer上的算法题。小编在求职找找工作期间剑指offer上的算法题刷了很多遍,并且每道题小编当时都总结了一种最适合面试时手撕算法的最优解法。今天开始每天和大家分享一道剑指offer上的算法题。 下面是第001道剑指offer算法题: 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一

我的博客 276

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

剑指offer-二维数组中的查找-题解

剑指offer-二维数组中的查找-题解题目描述解题思路代码实现复杂度分析 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 解题思路 直接遍历数组,找到target就返回true,没有就false; 从左下开始查找 特性:左下元素是所在行...

weixin_40394298的博客 246

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

剑指offer-二维数组中的查找&替换空格

剑指offer-1.二维数组中的查找&2.替换空格JZ1.二维数组中的查找JZ2.替换空格 JZ1.二维数组中的查找 题目 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 题解 选了最简单的暴力法 代码 package com.cjy.jianzhi_offer; import java.util.Scanner; public class JZ1 {

qq_39287430的博客 257

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

C语言实现《剑指offer》——03二维数组中的查找

一直以来都想有个自己的技术博客,但始终没有明确自己的技术方向,今天学学python明天看看java的,很迷茫。经历了研二下学期两个月以来的找实习过程,终于想明白了自己要坚持的技术路线:嵌入式全栈工程师,从"嵌入式应用层软件"到"Linux驱动"再到“Linux操作系统与内核”。要学习和掌握的内容很多,但在强烈的好奇心驱使下,这反而是一件令人兴奋的事,因为花时间去领略前辈们在这个领域留下的精彩,本就...

小灏灏同学的博客 759

剑指offer | 4 二维数组中的查找

剑指offer刷题1 前言2 题目3 思路及解答 1 前言 为了准备算法面试,开始刷题,剑指offer走起。计划10天内刷完!加油!(头条秋招提前批面试之前) 2 题目 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 3 思路及解答 思路1:暴力搜...

RUC_Lee的博客 264

力扣剑指Offer 第5天 查找算法(中等) 剑指 Offer 04. 二维数组中的查找 剑指 Offer 11. 旋转数组的最小数字 剑指 Offer 50. 第一个只出现一次的字符

力扣剑指Offer 第5天 查找算法(中等) 剑指 Offer 04. 二维数组中的查找 剑指 Offer 11. 旋转数组的最小数字 剑指 Offer 50. 第一个只出现一次的字符 剑指 Offer 04. 二维数组中的查找 题目 在一个n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 示例: 现有矩阵 matrix 如下: [ [1, 4, 7, 11, 15]

Ctrl_kun的博客 4552

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

优先考虑四个角,从左上角遍历的话,结果太多(有dfs那味了),主要是需要返回,这一点和右下角是一样的.这样做的好处是,每遍历一次,就缩小了范围!*matrixColSize == 0 (表达的是,二维数组每一行的长度都为0,即空!但是我们知道,初始化后,这个元素的内容是会被 初始化为"0"的,因此就必须在开始定义。对于这样的数组 [[]],它有一个元素(一个数组),元素里面的元素是空的.这样遍历,其余三个象限的都是被舍弃的,不可能存在我们要的值!其实就是利用的二维数组的构造,越往右,越大,越往下越大.

小龙的博客 262

【剑指Offer】二维数组中的查找

文章目录剑指Offer04-二维数组中的查找题目描述问题分析问题解决 剑指Offer04-二维数组中的查找 题目描述 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 示例: [ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24],

居易 272

剑指offer04--二维数组中的查找

剑指offer04:二维数组中的查找 题目描述: 思路解析:此题容易想到的有两种思路。1)暴力法。遍历数组,然后进行比较,直到找到目标数。暴力时间复杂度为O(nm),即为二维数组的大小。2)线性查找。由题目可知,数组按照一定的顺序排列,可以联想到,对行和列进行判断,然后排除,直到找到目标数。以题目中的矩阵为例(5行5列),从数组的右上角开始判断,即第0行、第4列。如果matrix[0][4]==target,则返回true;如果matrix[0][4]<target,则说明target一定在

leetcode-第一题、两数之和 200

剑指offer(4 二维数组中的查找) 题解

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

weixin_45453028的博客 201

java二维数组行列互换_「剑指offer题解」二维数组中的查找

关注我的微信公众号:后端技术漫谈不定期推送关于后端开发、爬虫、算法题、数据结构方面的原创技术文章,以及生活中的逸闻趣事。原创博客主要内容Java知识点复习全手册Leetcode算法题解析剑指offer算法题解析SpringCloud菜鸟入门实战系列SpringBoot菜鸟入门实战系列Python爬虫相关技术文章后端开发相关技术文章前言众所周知,对于面试而言,《剑指offer》是一本“好书”。如果你...

weixin_33117401的博客 204

C++描述 LeetCode 剑指 Offer 04. 二维数组中的查找

C++描述 LeetCode 剑指 Offer 04. 二维数组中的查找   大家好,我叫亓官劼(qí guān jié ),在优快云中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在优快云中写博客,唯一博客更新的地址为:亓官劼的博客 ,同时正在尝试在B站中做一些内容分享,B站主页为: 亓官劼的B站主页 本文原创为亓官劼,请大家支持原创,部分平台一直在恶意盗取博主的文章!!! 若需联系博主,可以联系本人微信:qiguanjie2015 在一个 n * m 的二维数组中,每一行

一起加油 809

剑指offer 面试题4:二维数组中的查找

剑指offer 面试题4:二维数组中的查找 最近开始刷剑指offer了,代码思路基本上是书上的,语言用的java 此题在牛客网的链接:二维数组中的查找 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 一开始的思路 二重循环直接遍历数组,找目标整...

qq_39924622的博客 187
上一篇: 第K大的数
下一篇: Redis总结
IceCaptain
博客等级 码龄10年 12粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值