剑指 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
解题思路

观察矩阵特点,发现可以在第一行中找到最后一个小于等于该数的位置,在该列中查找,同理找到第一列中最后一个小于等于该数的位置,在该行查找、如果都不存在,那么在小于x,y范围内查找。
public bool FindNumberIn2DArray(int[][] matrix, int target){if(matrix.GetLength(0) == 0|| target == null || matrix[0].GetLength(0) == 0)return false;int x = 0 , y = 0;for(int i = 0 ; i < matrix[0].GetLength(0); i++)//1维长度{if(matrix[0][i] <= target){x = i;}}for(int i = 0 ; i < matrix.GetLength(0); i++)//0维长度{if(matrix[i][x] == target)return true;}for(int i = 0 ; i < matrix.GetLength(0); i++)//0维长度{if(matrix[i][0] <= target){y = i;}}for(int i = 0 ; i < matrix[0].GetLength(0); i++)//1维长度{if(matrix[y][i] == target)return true;}for(int i = 0 ; i <= y; i++)//在x,y内找{for(int j = 0; j <= x ; j++){if(matrix[i][j] == target)return true;}}return false;}

优化
相关文章:
剑指 Offer 04. 二维数组中的查找解题思路
文章目录 标题解题思路优化 标题 在一个 n * m 的二维数组中,每一行都按照从左到右 非递减 的顺序排序,每一列都按照从上到下 非递减 的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整…...
冯诺依曼体系结构详解
一.冯诺伊曼体系结构的概念: 约翰冯诺依曼(John von Neumann,1903.1.28-1957.2.8),美籍匈牙利数学家,计算机科学家,物理学家。是20世纪最重要的数学家之一,后来被称为计算机之父。 后…...
ISO证书“带标”与“不带标”的区别是什么?
ISO9001质量管理体系认证是企业产品获得“通行绿卡”的最直接最有效的途径。 通过认证在打破贸易壁垒,提高产品知名度,降低生产成本,提高经济效益,维护消费者权益,减少重复审核负担等方面的作用越来越为企业界所共知。…...
RocketMQ 领域模型概述
本文为您介绍 Apache RocketMQ 的领域模型。 Apache RocketMQ 是一款典型的分布式架构下的中间件产品,使用异步通信方式和发布订阅的消息传输模型。通信方式和传输模型的具体说明,请参见下文通信方式介绍和消息传输模型介绍。 Apache RocketMQ 产品具备…...
黄河千年清一回与人类健康
黄河千年清一回奏响一曲曲让人类走进幸福新时代的壮丽凯歌。疫情之后的首届全世界健康产业发展大会 5 月28 日上午 9 时在中国首都北京召开 The Yellow River has played a magnificent song of triumph in the millennium, ushering humanity into a new era of happiness. T…...
Android java层hook------xposed框架的使用
xposed曾经是android平台上最好的java层hook和调试工具,由于已经不再更新,当前支持的android系统版本比较老旧,目前只能支持到android6.0,故已经逐渐落伍,目前android上最广泛使用的hook工具是frida,这是另…...
css奇淫巧计
1.input文本内容替换 -webkit-text-security:通过用形状替换字符,仅影响那些字段不是的typepassword 可选值:none (无),circle (圆圈),disc (圆形),square &a…...
Web服务器实现|基于阻塞队列线程池的Http服务器|线程控制|Http协议
基于阻塞队列生产者消费者模型线程池的多线程Web服务器 代码地址:WebServer_GitHub_Addr README 摘要 本实验通过C语言,实现了一个基于阻塞队列线程池的多线程Web服务器。该服务器支持通过http协议发送报文,跨主机抓取服务器上特定资源。与…...
【C++】运算符重载(日期类的实现)
【C】运算符重载(日期类的实现) 前言运算符重载operator全局和类中 日期类的实现成员变量的确定构造函数拷贝构造 运算符重载部分的重载思路实现GETmonthdayoperator 的重载思路实现 -的与-的重载实现 各个比较运算符的重载实现 前置与后置实现 …...
【Linux】线程分离 | 线程库 | C++调用线程 | 线程局部存储
文章目录 1. 线程分离1. 为什么要线程分离?2. 具体使用3. 为什么有时候分离在调用join 会正常运行? 2. 如何理解线程库?如何理解 先描述 在组织? 3. C中使用多线程4. 线程局部存储局部变量全局变量 1. 线程分离 1. 为什么要线程分…...
c++ ffmpeg 浅谈YUV444、YUV422、YUV420(2)
本期将会给大家介绍YUV相关基础知识,同时也介绍威创网络分布式系统的卓越色彩处理技术。 1.什么是YUV色彩空间 2.YUV采样格式 3.YUV不同采样格式对图像画质的影响分析 一、什么是YUV色彩空间? YUV是视频、图片、相机等应用中常常使用的一类图像格式,是…...
Redis在Windows下安装配置教程
Redis是一个开源的高性能键值对存储数据库,常用于缓存、消息队列等场景。本文将介绍如何在Windows系统下安装配置Redis。 1. 下载地址 Redis官方网站提供了Windows版本的安装包下载地址,网址为:https://github.com/tporadowski/redis/relea…...
数据库服务器
数据库服务器,联系Web服务器与DBMS的中间件是负责处理所有的应用程序服务器,包括在web服务器和后台的应用程序或数据库之间的事务处理和数据访问。 基本信息 中文名 数据库服务器 外文名 database server 功能 数据库服务器建立在数据库系统基础上&a…...
VS输出路径和生成事件
在生成时,常常希望输出文件夹整洁,因此需要设置dll或exe输出位置,同时也希望对一些文件做一些特殊操作 VS的 UI 常用缩写 “./”:代表目前所在的目录。 " . ./"代表上一层目录。 “/”:代表根目录。 生成…...
从 WebKit 看浏览器内核架构
浏览器常见的浏览器内核有:Blink、WebKit、Gecko、Trident 等,目前 WebKit 内核占据了非常大的的市场,包括 Chrome、Safari、安卓浏览器等市面上的主流浏览器,都使用了 WebKit 内核。 从 WebKit 看浏览器内核架构 既然 WebKit 这么…...
使用原生的 JavaScript,不依赖于任何特定的库与 ROSBridge进行通信
使用原生的 JavaScript,不依赖于任何特定的库与 ROSBridge进行通信 创建与 ROS 的连接: var rosbridge_url "ws://localhost:9090"; var ws new WebSocket(rosbridge_url);ws.onopen function(event) {console.log(Connected to rosbri…...
MATLAB第十章_图像处理算法
目录 图像处理算法 图像处理基础 图像处理函数 默认显示方式 添加颜色条 显示多帧图像 显示动画 三维材质图像 图像的直方图 灰度变换 均衡直方图 图像处理应用 图像增强 图像重建 图像变换 图像压缩 图像分割 图像边缘检测 图像识别 图像处理算法 图像处理…...
RobotFramework接口测试方案
1. Robot FrameWork介绍 1.1 介绍 Robot Framework是用于验收测试和回归测试的通用测试自动化框架。它使用易于理解的表格数据语法,非常友好的实现了关键字驱动和数据驱动模式。它的测试功能可以通过使用Python或Java实现的测试库进行扩展,用户可以使用…...
chatgpt赋能python:Python中日期转换:从字符串到日期对象
Python中日期转换:从字符串到日期对象 作为一个经验丰富的Python工程师,日期转换在我的日常编码工作中经常遇到。Python提供了一些内置函数和模块,可以将字符串转换为日期对象或将日期对象格式化为特定的字符串。本篇文章将带您深入了解Pyth…...
k8s 1.27新特性in-place使用方法:避坑指南(官方文档有坑,已提issue)
背景 按照官方文档试用新版的in-place特性时,一字不差地执行了,但是却出现了执行失败的情况: 执行kubectl -n qos-example patch pod qos-demo-5 --patch {"spec":{"containers":[{"name":"qos-demo-ct…...
别再死记硬背了!用PyTorch代码逐行拆解Transformer中的QKV矩阵计算
用PyTorch代码逐行拆解Transformer中的QKV矩阵计算 在自然语言处理领域,Transformer架构已经成为事实上的标准。但很多开发者发现,仅通过理论图示理解其核心的注意力机制仍然存在困难。本文将带你用PyTorch代码从零开始实现QKV矩阵的计算过程,…...
实战分享:如何用星图平台零代码私有化Qwen3-VL:30B,并接入飞书实现智能对话
实战分享:如何用星图平台零代码私有化Qwen3-VL:30B,并接入飞书实现智能对话 1. 项目概述与价值 在当今企业智能化转型的浪潮中,如何快速部署私有化大模型并实现业务场景落地,成为许多技术团队面临的挑战。本文将详细介绍如何通过…...
SEO_10个提升网站排名的SEO技巧与实战方法
SEO:10个提升网站排名的SEO技巧与实战方法 在当今数字化时代,网站排名不仅关乎网站的曝光率,更影响到业务的发展。因此,提升网站排名(SEO)成为了每一个网站主的首要任务。有哪些SEO技巧能够帮助提升网站的排名呢&…...
杰理之播放暂停的杂音【篇】
a2dp PLC...
杰理之进入ANC模式播歌,ANC效果变通透【篇】
需与工具ANC配置中dac_gain参数保持一致...
开发环境配置实战:通过Anaconda Prompt高效管理虚拟环境与Jupyter内核
1. 为什么需要Anaconda Prompt管理虚拟环境 作为数据科学领域的开发者,我经历过无数次Python环境混乱带来的痛苦。记得有一次在交付项目前,突然发现本地运行的模型在服务器上完全无法复现,排查了半天才发现是numpy版本不兼容的问题。这种经历…...
10分钟零成本搭建KIMI AI免费API:个人智能助手完整指南
10分钟零成本搭建KIMI AI免费API:个人智能助手完整指南 【免费下载链接】kimi-free-api 🚀 KIMI AI 长文本大模型逆向API【特长:长文本解读整理】,支持高速流式输出、智能体对话、联网搜索、探索版、K1思考模型、长文档解读、图像…...
论文写作“智多星”:书匠策AI,开启期刊论文新纪元
在学术的广袤天地里,论文写作宛如一场充满挑战的冒险之旅。尤其是期刊论文,它不仅是学者研究成果的集中展现,更是学术交流与进步的重要桥梁。但面对选题迷茫、资料繁杂、结构搭建困难等诸多难题,许多学者常常感到力不从心。别担心…...
2026知识付费SaaS避坑指南:数据安全与系统稳定性实测,创客匠人为何值得托付?
在知识付费行业,大多数选型对比只关注“前台功能”:能不能卖课、能不能直播、有没有拼团。但真正决定生意生死的,往往是看不见的“底层能力”——数据是否安全?系统是否稳定?学员资产能否真正归你所有?过去…...
告别命令行恐惧!在Ubuntu 20.04上像装App一样轻松安装Typora(附国内源配置)
告别命令行恐惧!在Ubuntu 20.04上像装App一样轻松安装Typora(附国内源配置) 第一次在Linux系统上安装软件时,面对黑底白字的终端窗口,很多人会本能地产生抗拒感。这种感受就像突然被丢进一个全英文的异国机场——你知道…...
