leetcode LCR121.寻找目标值-二维数组
目录
- 问题描述
- 示例
- 具体思路
- 思路一
- 思路二
- 代码实现
问题描述
m*n 的二维数组 plants 记录了园林景观的植物排布情况,具有以下特性:
- 每行中,每棵植物的右侧相邻植物不矮于该植物;
每列中,每棵植物的下侧相邻植物不矮于该植物。
题目链接:https://leetcode.cn/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/description/
示例
相似题目链接(与leetcode 240题相同): https://leetcode-cn.com/problems/search-a-2d-matrix-ii/
具体思路
这个题目和杨氏矩阵是一样的。
杨氏矩阵:有一个二维数组,数组的每行从左到右都是递增的,每列从上到下都是递增的,在这样的数组中查找一个数字是否存在。
例如有一个矩阵为:
1 2 3
4 5 6
7 8 9
思路一
直接对该二维数组进行遍历,但该种方法的时间复杂度为 O ( N 2 ) O(N^2) O(N2),在此不考虑。
思路二
我们可以找到行列的交界处,比如[0][2],即数字3这个位置,通过观察,我们可以发现,该数字是所在行中的最大数字,所在列中的最小数字,可以用目标数target和该交界处数字进行比较,如果target大于该数,则表示比这行最大的数还要大,所以一定不在这一行,舍弃该行,向下行进行查找。 如果target小于该数,则表示target比这列最小的数还要小,所以一定不在这一列,舍弃该列,向左边行进行查找。依次类推,找到返回true,找不到返回false。
如果用[2][0]也是可以的,思路则反过来。
代码实现
class Solution {
public:bool findTargetIn2DPlants(vector<vector<int>>& plants, int target) {//需要考虑输入为空数组时的判断,如果是空数组的话无法对其进行访问if (plants.size() == 0 || plants[0].size() == 0) //plants.size()表示是有几个vector<int>(行),plants[0].size()表示第0个vector里面有多少个元素(列){return false;}int i = 0; //二维数组的第0行int j = plants[0].size() - 1; //二维数组第0行的最后一个元素下标while (i < plants.size() && j >= 0){if (target < plants[i][j]) //目标值比第0行最后一个元素小就往左边进行查找{j--;}else if (target > plants[i][j]) //目标值比第0行最后一个元素大就往下查找{i++;}else{return true;}}return false;}
};
class Solution {
public:bool findTargetIn2DPlants(vector<vector<int>>& plants, int target) {int i = plants.size() - 1, j = 0; //最后一行的第1个元素while (i >= 0 && j < plants[0].size()){if (plants[i][j] > target) i--;else if (plants[i][j] < target) j++;else return true;}return false;}
};
相关文章:

leetcode LCR121.寻找目标值-二维数组
目录 问题描述示例具体思路思路一思路二 代码实现 问题描述 m*n 的二维数组 plants 记录了园林景观的植物排布情况,具有以下特性: 每行中,每棵植物的右侧相邻植物不矮于该植物; 每列中,每棵植物的下侧相邻植物不矮于该…...

成都百洲文化传媒有限公司引领电商服务新潮流
在当今数字化时代,电商行业日新月异,竞争激烈。然而,在这个浪潮中,成都百洲文化传媒有限公司凭借其专业的电商服务,脱颖而出,成为了行业中的新领军者。今天,我们就来探讨一下这家公司如何在这个…...

【C++从练气到飞升】05---运算符重载
🎈个人主页:库库的里昂 ✨收录专栏:C从练气到飞升 🎉鸟欲高飞先振翅,人求上进先读书。 目录 ⛳️推荐 一、运算符重载的引用 二、运算符重载 三、赋值运算符重载 1 .赋值运算符重载格式: 2 .赋值运算符只能重载成…...
[leetcode] 994. 腐烂的橘子
在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一: 值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。 每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。 返回 直到单元格中没有…...

如何本地搭建群晖虚拟机并实现无quickconnect服务环境远程访问
文章目录 前言本教程解决的问题是:按照本教程方法操作后,达到的效果是前排提醒: 1. 搭建群晖虚拟机1.1 下载黑群晖文件vmvare虚拟机安装包1.2 安装VMware虚拟机:1.3 解压黑群晖虚拟机文件1.4 虚拟机初始化1.5 没有搜索到黑群晖的解…...

[Java基础揉碎]final关键字
目录 介绍 在某些情况下,程序员可能有以下需求,就会使用到final final注意事项和讨论细节 1) final修饰的属性又叫常量,一般用XX_XX_XX来命名 2) final修饰的属性在定义时,必须赋初值,并且以后不能再修改&#…...

用OceanBase binlog service 轻松进行数据回滚
背景 在日常的数据库运维过程中,难免会遭遇数据误操作的情形,比如因疏忽而执行了非预期的delete或update操作,这时就需要进行数据回滚。如果在OceanBase中启用了回收站功能,并设置了合适的undo_retention,那么我们可以…...
【C++】学习记录--condition_variable 的使用
condition_variable使用步骤如下:创建一个condition_variable对象创建一个互斥锁mutex对象,用来保护共享资源的访问在需要等待条件变量的地方,使用unique_lock<mutec>对象锁定互斥锁并调用condition_variable::wait()、condition_varia…...

Linux之时间子系统(四): tick 层模块(periodic 和dynamic )
一、时间子系统的软件架构 二、tick 层模块的文件 tick-common.c tick-oneshot.c tick-sched.c tick-broadcast.c tick-broadcast-hrtimer.c 这三个文件属于tick device layer。 tick-common.c文件是periodic tick模块,用于管理周期性tick事件。 tick-oneshot.c文…...

Docker Command
小试牛刀 # 查看docker版本 docker -v docker --version # 查看帮助 docker --help # 永远的Hello World docker run hello-world镜像操作 查看本地已有的镜像 docker images -a :列出本地所有的镜像(含中间映像层) -q :只显示镜像ID --digests :显示…...

Linux系统部署Paperless-Ngx文档管理系统结合内网穿透实现公网访问
文章目录 1. 部署Paperless-ngx2. 本地访问Paperless-ngx3. Linux安装Cpolar4. 配置公网地址5. 远程访问6. 固定Cpolar公网地址7. 固定地址访问 Paperless-ngx是一个开源的文档管理系统,可以将物理文档转换成可搜索的在线档案,从而减少纸张的使用。它内置…...

6.shell case控制语句
case控制语句 1.什么是case case条件语句相当于多分支的if/elif/else条件语句,主要还是用来做条件判断的,常被应用于实现系统服务启动脚本。 case语句中,会将case获取的变量值与表达式部分的值1、值2、值3等逐个进行比较,如果变量值和某个表…...
如何判断HDMI接口版本是1.4还是2.0呢?
如何判断HDMI接口版本是1.4还是2.0呢? HDMI是一种用于传输高质量音频和视频信号的接口标准。随着技术的不断发展,HDMI接口也经历了多次升级和改进。在市场上,常见的HDMI接口版本包括1.4和2.0。判断HDMI接口版本主要通过以下几种方法ÿ…...

【开发环境搭建篇】NodeJS的安装和配置
作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过大学刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是࿰…...
【Docker】docker和docker-compose一键安装脚本(linux)
一、准备和运行脚本 当前脚本下载的docker和docker-compose兼容系统架构为x64,可以根据自己实际系统版本更改下载链接 1. 在控制台使用vim新建: vim install-docker.sh2. 复制内容并粘贴: #!/usr/bin/env bash # 设置脚本在遇到错误时终止执行 set -…...

在 Windows 中安装配置并启动运行 Jenkins【图文详细教程】
安装 Jenkins 的系统要求: 最少 256MB 可用内存最少 1GB 可用磁盘空间JDK 8 / 11 /17(Jenkins 是用 Java 写的,打包成 war 包) 查看 JDK 的版本 Java JDK 在 Windows 中安装可以参考:https://www.yuque.com/u27599042/…...
C# 读取txt文本所有行
引用:System.IO; Path.Combine(); //将字符串组合成一个路径 Path.GetFullPath(); //返回指定路径的绝对路径 File.ReadAllLines(); //读取文本框返回一个数组 File.ReadAllText(); //读取文本框返回一个字符串 File.ReadAllBytes(); //读取文本框返回字节 …...

STM32使用常见错误合集(正在更新版)
本文章记录一些学习STM32的一些错误问题,师承江科大哈哈哈 一、编译、烧录类问题 1、烧录不成功,Keil提示RDDI-DAP Error【场景:PWM驱动直流电机】 解决方案:将电机断开再进行烧录,断开后就可以美美烧录不报错啦~ …...
Java Random类
一、Random类 在项目开发中,经常需要使用随机数值,例如,网站登录中的验证码,或者需要以一定概率实现的某种效果(如游戏程序中的物品掉落等),就需要Java提供的Random类,该类用于生成…...

【Spring Cloud】微服务通信概述
SueWakeup 个人主页:SueWakeup 系列专栏:学习技术栈 个性签名:人生乏味啊,我欲令之光怪陆离 本文封面由 凯楠📷 友情赞助播出 目录 前言 1. Dubbo(Spring Cloud Alibaba)和 Spring Cloud 的适…...

C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险
C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...
【SpringBoot自动化部署】
SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理
在城市的某个角落,一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延,滚滚浓烟弥漫开来,周围群众的生命财产安全受到严重威胁。就在这千钧一发之际,消防救援队伍迅速行动,而豪越科技消防一体化安全管控平台构建的消防“…...

VisualXML全新升级 | 新增数据库编辑功能
VisualXML是一个功能强大的网络总线设计工具,专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑(如DBC、LDF、ARXML、HEX等),并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...

02.运算符
目录 什么是运算符 算术运算符 1.基本四则运算符 2.增量运算符 3.自增/自减运算符 关系运算符 逻辑运算符 &&:逻辑与 ||:逻辑或 !:逻辑非 短路求值 位运算符 按位与&: 按位或 | 按位取反~ …...

倒装芯片凸点成型工艺
UBM(Under Bump Metallization)与Bump(焊球)形成工艺流程。我们可以将整张流程图分为三大阶段来理解: 🔧 一、UBM(Under Bump Metallization)工艺流程(黄色区域ÿ…...

网页端 js 读取发票里的二维码信息(图片和PDF格式)
起因 为了实现在报销流程中,发票不能重用的限制,发票上传后,希望能读出发票号,并记录发票号已用,下次不再可用于报销。 基于上面的需求,研究了OCR 的方式和读PDF的方式,实际是可行的ÿ…...