LeetCode 2373. 矩阵中的局部最大值

news2025/1/11 6:18:49

LeetCode 2373. 矩阵中的局部最大值

难度: e a s y \color{Green}{easy} easy


题目描述

给你一个大小为 n x n n x n nxn 的整数矩阵 g r i d grid grid

生成一个大小为 ( n − 2 ) x ( n − 2 ) (n - 2) x (n - 2) (n2)x(n2) 的整数矩阵 m a x L o c a l maxLocal maxLocal ,并满足:

  • m a x L o c a l [ i ] [ j ] maxLocal[i][j] maxLocal[i][j] 等于 g r i d grid grid 中以 i + 1 i + 1 i+1 行和 j + 1 j + 1 j+1 列为中心的 3 x 3 3 x 3 3x3 矩阵中的 最大值

换句话说,我们希望找出 g r i d grid grid 中每个 3 x 3 3 x 3 3x3 矩阵中的最大值。

返回生成的矩阵。

示例 1:

输入:grid = [[9,9,8,1],[5,6,2,6],[8,2,6,4],[6,2,2,2]]
输出:[[9,9],[8,6]]
解释:原矩阵和生成的矩阵如上图所示。
注意,生成的矩阵中,每个值都对应 grid 中一个相接的 3 x 3 矩阵的最大值。

示例 2:

输入:grid = [[1,1,1,1,1],[1,1,1,1,1],[1,1,2,1,1],[1,1,1,1,1],[1,1,1,1,1]]
输出:[[2,2,2],[2,2,2],[2,2,2]]
解释:注意,2 包含在 grid 中每个 3 x 3 的矩阵中。

提示:

  • n = = g r i d . l e n g t h = = g r i d [ i ] . l e n g t h n == grid.length == grid[i].length n==grid.length==grid[i].length
  • 3 < = n < = 100 3 <= n <= 100 3<=n<=100
  • 1 < = g r i d [ i ] [ j ] < = 100 1 <= grid[i][j] <= 100 1<=grid[i][j]<=100

算法

(遍历)

grid 的大小为 n×n,那么我们申请一个大小为 (n−2)×(n−2) 的矩阵 res 用来存放答案。我们遍历 grid 中每个 3×3 子矩阵的左上角,然后统计当前子矩阵的最大值放入 res 中。

具体做法是,我们顺序遍历 i (0≤i<n−2),再顺序遍历 j (0≤j<n−2),接着遍历求解 {grid(x,y) ∣ i≤x<i+3,j≤y<j+3} 的最大值放入
res[i][j] 中。

复杂度分析

  • 时间复杂度 O ( n 2 ) O(n^2) O(n2),其中 n n ngrid 的行数。

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

C++ 代码

class Solution {
public:
    
    vector<vector<int>> largestLocal(vector<vector<int>>& grid) {
        int n = grid.size();
        vector<vector<int>> res(n - 2, vector<int>(n - 2, 0));

        for (int i = 0; i < n - 2; i ++) {
            for (int j = 0; j < n - 2; j ++) {
                for (int x = i; x < i + 3; x ++) {
                    for (int y = j; y < j + 3; y ++) {
                        res[i][j] = max(res[i][j], grid[x][y]);
                    }
                }
            }
        }

        return res;

    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/380003.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决Ubuntu虚拟机不能复制粘贴

安装虚拟机的时候就有点不顺&#xff0c;在填写用户名和密码的时候键盘敲不上字&#xff0c;重新又安装了几次才行&#xff0c;安装成功后发现不能复制粘贴主机的内容&#xff0c;这肯定不行啊&#xff0c;找解决方案&#xff0c;网上也有很多&#xff0c;有如下&#xff1a;重…

泰克示波器|MSO64示波器的应用

泰克新一代示波器MSO64为实例来讲解时频域信号分析技术。MSO64采用全新TEK049平台&#xff0c;不仅实现了4通道同时打开时25GS/s的高采样率&#xff0c;而且实现了12-bit高垂直分辨率。同时&#xff0c;由于采用了新型低噪声前端放大ASIC—TEK061&#xff0c;大大降低了噪声水平…

Springboot整合Easy-Es

版本说明 Springboot 2.7.5JDK 17Elasticsearch 7.14.0Easy-Es 1.1.1《点我进入Easy-Es官网》PS&#xff1a;目前Easy-Es暂不支持SpringBoot3.X Windows10安装Elasticsearch 《安装Elasticsearch教程》 pom.xml <parent><groupId>org.springframework.boot<…

SpringBoot集成Swagger3.0(入门)01

创建SpringBoot项目 创建完成后再pom文件中导入swagger3.0依赖&#xff0c;具体的pom文件内容如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://w…

一看就懂 —— Spring boot + Spring MVC + MyBatis 基础框架demo

目录 前言 一、项目依赖 二、配置文件 三、创建数据库和实体类 3.1、创建数据库 3.2、创建实体类 四、构建 Mapper 层代码实现&#xff08;接口 XML&#xff09; 4.1、创建接口 4.2、创建 XML 4.3、XML 文件与接口的对应关系 五、实现服务层 六、实现控制器 小结 …

原生JS实现拖拽排序

拖拽&#xff08;这两个字看了几遍已经不认识了&#xff09; 说到拖拽&#xff0c;应用场景不可谓不多。无论是打开电脑还是手机&#xff0c;第一眼望去的界面都是可拖拽的&#xff0c;靠拖拽实现APP或者应用的重新布局&#xff0c;或者拖拽文件进行操作文件。 先看效果图&am…

动态IP与静态ip的区别是什么

1、DHCP IP即动态ip&#xff0c;可以自动获取IP地址。静态ip上网又被称为固定IP地址上网&#xff0c;需要手动设置IP地址。2、在网速上&#xff0c;动态ip和静态ip没有区别。3、动态ip不是一个真实的IP地址&#xff0c;静态IP是可以直接上网的IP地址。静态ip和动态ip设置方法&a…

datahub部署

硬件要求DataHub官方要求的最低配置为&#xff1a;2 个 CPU、8GB RAM、2GB 交换区和 10GB 磁盘空间。本文的示例环境为阿里云centos8云服务器安装dockeryum -y install docker sudo systemctl start docker安装docker-composecurl -SL https://get.daocloud.io/docker/compose…

Python3-列表

Python3 列表 序列是 Python 中最基本的数据结构。 序列中的每个值都有对应的位置值&#xff0c;称之为索引&#xff0c;第一个索引是 0&#xff0c;第二个索引是 1&#xff0c;依此类推。 Python 有 6 个序列的内置类型&#xff0c;但最常见的是列表和元组。 列表都可以进…

VUE前端常问面试题

文章目录一、VUE前端常问面试题二、文档下载地址一、VUE前端常问面试题 1、MVC和MVVM 区别 MVC&#xff1a;MVC全名是 Model View Controller&#xff0c;即模型-视图-控制器的缩写&#xff0c;一种软件设计典范。 Model(模型)&#xff1a;是用于处理应用程序数据逻辑部分。通…

力扣-第二高的薪水

大家好&#xff0c;我是空空star&#xff0c;本篇带大家了解一道中等的力扣sql练习题。 文章目录前言一、题目&#xff1a;176. 第二高的薪水二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行结果5.其他总结…

[chapter 11][NR Physical Layer][Layer Mapping]

前言&#xff1a;这里参考Curious Being系列 &#xff0c;简单介绍一下NR 5G 物理层核心技术层映射.我们主要讲了一下what is layer Mapping, why need layer Mapping, how layer Mapping 参考文档&#xff1a;3GPP 38.211- 6.3.1.3 Layer mapping《5G NR Physical Layer | Cha…

仓储调度|库存管理系统

技术&#xff1a;Java、JSP等摘要&#xff1a;随着电子商务技术和网络技术的快速发展&#xff0c;现代物流技术也在不断进步。物流技术是指与物流要素活动有关的所有专业技术的总称&#xff0c;包括各种操作方法、管理技能等&#xff0c;物流业采用某些现代信息技术方面的成功经…

智能客服vs人工客服,两者真水火不容?

随着互联网、智能技术的不断发展&#xff0c;Chatgpt的到来引发各界热议&#xff0c;不少人认为Chatgpt将给各个领域带来翻天覆地的变化。而在客服行业&#xff0c;AI产物——智能客服早已落地并且被广泛运用&#xff0c;在Chatgpt爆火的这段时间&#xff0c;有望率先融合应用C…

虚拟局域网VLAN的实现机制

虚拟局域网VLAN的实现机制1.IEEE 802.1Q帧2.交换的端口类型AccessTrunkHybrid&#xff08;华为特有&#xff09;1.IEEE 802.1Q帧 IEEE802.1Q帧&#xff08;也称Dot One Q帧&#xff09;对以太网的MAC帧格式进行了扩展&#xff0c;插入了4字节的VLAN标记。 2.交换的端口类型 A…

实验进行时

torch与cuda版本配对&#xff1a;Previous PyTorch Versions | PyTorch 删除虚拟环境&#xff1a;conda remove -n mygcn --all 时序KG 删掉1.7.1torch装1.8.0&#xff0c;解决报错RuntimeError: CUDA error: no kernel image is available for execution on the 已经成功运…

数组模拟常见数据结构

我们来学习一下用数组模拟常见的数据结构&#xff1a;单链表&#xff0c;双链表&#xff0c;栈&#xff0c;队列。用数组模拟这些常见的数据结构&#xff0c;需要我们对这些数据结构有一定的了解哈。单链表请参考&#xff1a;http://t.csdn.cn/SUv8F 用数组模拟实现比STL要快&a…

PCB板漏孔、漏槽怎么办?看工程师避坑“SOP”

本文为大家介绍PCB画板时常见的钻孔问题&#xff0c;避免后续踩同样的坑。钻孔分为三类&#xff0c;通孔、盲孔、埋孔。不管是哪种孔&#xff0c;孔缺失的问题带来的后果是直接导致整批产品不能使用。因此钻孔设计的正确性尤为重要。 案例讲解 问题1&#xff1a;Altium设计的文…

Linux 进程:进程状态

目录一、进程状态1.简单分类2.详细分类&#xff08;1&#xff09;运行态&#xff08;2&#xff09;休眠态[1]可中断休眠态[2]不可中断休眠态&#xff08;3&#xff09;停止状态&#xff08;4&#xff09;死亡状态&#xff08;5&#xff09;僵死状态二、特殊进程1.僵尸进程2.孤儿…

Java-枚举类的使用(详解)

枚举类的使用前言一、何为枚举类&#xff1f;二、自定义枚举类&#xff08;JDK1.5之前&#xff09;1、实现1.1 属性1.2 构造器2、代码演示三、用关键字enum定义枚举类&#xff08;JDK 1.5&#xff09;1、实现1.1 属性1.2 构造器2、代码演示四、Enum类的方法五、实现接口的枚举类…