leetcode2373. 矩阵中的局部最大值

news2025/2/3 22:48:41
  • https://leetcode.cn/problems/largest-local-values-in-a-matrix/

  • 给你一个大小为 n x n 的整数矩阵 grid 。

  • 生成一个大小为 (n - 2) x (n - 2) 的整数矩阵 maxLocal ,并满足:
    maxLocal[i][j] 等于 grid 中以 i + 1 行和 j + 1 列为中心的 3 x 3 矩阵中的 最大值 。
    换句话说,我们希望找出 grid 中每个 3 x 3 矩阵中的最大值

  • 返回生成的矩阵。

示例 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 == grid.length == grid[i].length
3 <= n <= 100
1 <= grid[i][j] <= 100

code 暴力

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;
    }
};

code 单调队列

  • https://leetcode.cn/problems/largest-local-values-in-a-matrix/solution/javapythonmei-ju-mo-ni-dan-diao-dui-lie-fm0pn/
    在这里插入图片描述
class Solution {
public:
    vector<vector<int>> largestLocal(vector<vector<int>>& grid) {
        int n = grid.size() - 2;
        // 中间预处理数组
        vector<vector<int>> res(grid.size(), vector<int>(n,0));
        // 结果数组
        vector<vector<int>> ans(n, vector<int>(n,0));
        for(int i = 0; i < grid.size(); i++){
            int que[100] = {0}; // 每行声明一个单调队列
            int hh = 0; // 头
            int tt = -1; // 尾

            for(int j = 0; j < grid.size(); j++){
                // 头结点下标超过区间时,从队头出队
                if(hh <= tt && que[hh] < j - 2)hh++;
                // 当队尾元素小于当前元素时,从队尾出队
                while(hh <= tt && grid[i][que[tt]] <= grid[i][j] ) tt--;
                // 入队
                que[++tt] = j;
                // 达到区间
                if(j >= 2){
                    res[i][j - 2] = grid[i][que[hh]];
                }
            }
        }
        for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            int k = i + 2;
            while(k >= i){
                
                ans[i][j] = max(ans[i][j],res[k][j]);
                k--;
            }
        }
    }
        return ans;
    }

};

作者:cnsummer
链接:https://leetcode.cn/problems/largest-local-values-in-a-matrix/solution/c-typescript-2373-ju-zhen-zhong-de-ju-bu-vxa1/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

cg

  • leetcode239. 滑动窗口最大值 单调队列
  • 二维单调队列思路:遍历i,j,每一行维护一个单调队列,当j>=2时代表窗口数达到3个,此时记录单调最大值,这个最大值更新的是当前行和当前行的前两行的最大值,用k来进行遍历,当然k需要在结果数组允许行数的边界内。
    单调队列记录的是下标,当左侧下标离开左侧边界时需要移除。

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

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

相关文章

【Android】报错java.lang.reflect.InvocationTargetException解决办法

报错信息&#xff1a;java.lang.reflect.InvocationTargetException反射层调用方法失败 结果图 原因 InvocationTargetException异常由Method.invoke(obj, args…)方法抛出。(反射异常) 当被调用的方法的内部抛出了异常而没有被捕获时&#xff0c;将由此异常接收&#xff01;&…

Stable Diffusion如何生成高质量的图-prompt写法介绍

文章目录 Stable Diffusion使用尝试下效果prompt的编写技巧prompt 和 negative promptPrompt格式Prompt规则细节优化Guidance Scale 总结 Stable Diffusion Stable Diffusion是一个开源的图像生成AI系统,由Anthropic公司开发。它基于 Transformer模型架构,可以通过文字描述生成…

查询每年最新的数据

1.最近在工作中遇到了一个需求,要求查询出每个党组织每年最新的数据 2.使用的sql语句为: SELECTCREATED_TIME,party_org_id,id FROMbranch_book WHERECREATED_TIME IN ( SELECT MAX( CREATED_TIME ) AS CREATED_TIME FROM branch_book GROUP BY DATE_FORMAT( year, %Y ), pa…

移动云发布医疗行业白皮书,构建全民健康数字化枢纽

医疗卫生改革正在深入推进&#xff0c;全民健康信息化建设也在加速进行。医疗云作为医疗卫生数字化转型的基础性平台&#xff0c;正引起越来越多的关注和探讨。近日&#xff0c;由中国移动集团政企事业部牵头发起&#xff0c;移动云联合IDC中国重磅发布《建设医疗云平台&#x…

Threejs——十四、关于深度冲突、重叠、以及加载模型进度条效果实现(附完整代码)

深度冲突 两个模型重叠的模型&#xff0c;通过浏览器旋转预览&#xff0c;会发现模型旋转的时候会发生闪烁。 这种情况&#xff0c;主要是两个模型重合&#xff0c;电脑分不清谁在前谁在后&#xff0c;这种情况&#xff0c;可以理解为深度冲突Z-fighting。 function addBox()…

Pytorch基本使用——NLP数据集构建总结

构建NLP数据集&#xff0c;分为如下几步&#xff1a; 1.单词分割形式 2.词汇表 3.利用词汇表word2idx映射&#xff0c;制作数据集 4.打包 ✨ 1.单词分割 有两种表示方式&#xff0c;一种是word-level&#xff0c;另外一种是char-level。 &#x1f30a; 1.1 word-level token…

可爱小猫猫【InsCode Stable Diffusion美图活动一期】

一、 Stable Diffusion 模型在线使用地址&#xff1a;https://inscode.csdn.net/inscode/Stable-Diffusion 二、模型版本及相关配置&#xff1a; 模型&#xff1a;chilloutmix_NiPrunedFp32fix Lora&#xff1a;cat_20230627113759 采样迭代步数&#xff08;steps&#xff09;:…

十三、前端包管理工具详解

一、代码共享方案 我们已经学习了在JavaScript中可以通过模块化的方式将代码划分成一个个小的结构&#xff1a; 在以后的开发中我们就可以通过模块化的方式来封装自己的代码&#xff0c;并且封装成一个工具&#xff1b; 这个工具我们可以让同事通过导入的方式来使用&#xf…

jetson系列开发板生成.engine部署

jetson系列开发板 生成engine 1. 下载 tensorrtx 至 NX git clone -b yolov5-v5.0 https://github.com/wang-xinyu/tensorrtx.git2. 修改 yololayer.h 中的参数 labels.txt 中有几类就将 CLASS_NUM 修改为几。 static constexpr int CLASS_NUM 80; 3. 编译 tensorrtx/yolov…

OLED拼接屏出现坏点怎么办?专家提供的修复方法与建议

OLED拼接屏作为一种高级显示技术&#xff0c;广泛应用于商业展示、会议室和监控中心等场所。 然而&#xff0c;由于制造过程中的缺陷或长时间使用导致的原因&#xff0c;OLED拼接屏可能出现屏幕坏点问题。本文将详细介绍OLED拼接屏屏幕坏点的修复方法与注意事项&#xff0c;帮…

高效编程:如何优雅地判断数组中所有对象的值不为空?

前言 在前端开发中&#xff0c;判断数组中所有对象的值是否都不为空是一个常见的任务。这个任务可能涉及到多个对象和多个属性&#xff0c;因此需要一种简洁而高效的方法来处理。本文将介绍三种不同的方法&#xff0c;帮助你轻松应对这个问题。 方法一&#xff1a;使用 every()…

原生js实现将图片内容复制到剪贴板

核心代码 /*复制图片*/ copyImg(dom) {/* 警告&#xff1a;dom不能是img标签&#xff0c;建议用DIV标签包裹img标签&#xff0c;否者会报错&#xff01;不支持复制背景图&#xff01; */dom.style.userSelect auto;let selection getSelection(), range document.createRan…

【AT89C52单片机项目】数字密码锁设计

实验目的 使用单片机设计数字密码锁。 实验仪器 一套STC89C52RC开发板套件&#xff0c;包括STC89C52RC开发板&#xff0c;以及USB烧录线。 设计要求 1、有设置密码、开锁工作模式&#xff1b; 2、可以每次都设置密码&#xff0c;也可以设置一次密码多次使用。 实验原理 …

JS加密之JS基础大考验

JS加密之JS基础大考验 工欲利其器 必先善其事 JavaScript&#xff08;简称JS&#xff09;是一种高级、动态、弱类型的编程语言&#xff0c;主要用于前端网页开发&#xff0c;但也可用于后端服务器开发&#xff08;通过Node.js&#xff09;。下面是JavaScript的一些特点&#…

windows 安装Vcenter6.7避坑指南

1、推荐windows server 2016。第一次选择windows 2019会出现很多错误 2、内存要求&#xff1a;8G以上 3、如果安装了VMtools&#xff0c;则需要把VCC全部卸载了&#xff08;控制面板-->卸载程序&#xff09;

【Linux初阶】基础IO - 软硬链接 | 初识、理解、应用 文件acm时间

&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#x1f31f; &#x1f36d;&#x1f36d;系列专栏&#xff1a;【Linux初阶】 ✒️✒️本篇内容&#xff1a;初识软硬链接&#xff0c;软硬链接的区别&#xff0c;理解软硬链接&#xff0c;软硬链接的应用&#xff0c;文…

Access简单应用

不说废话,直入正题. 关于Access的用法 一开始大家想用添加数据快速生成sql语句,其实在这里 java链接Access数据库需要ODBC连接池 机器jar包 ODBC连接池在 首次添加需要配置如上图所示,jar包链接在下面,直接放到项目下即可 UCanAccess - Browse Files at SourceForge.net下载…

前端学习记录~2023.7.13~CSS杂记 Day6

前言一、基本文字和字体样式1、CSS 中的文字样式涉及什么2、字体&#xff08;1&#xff09;颜色&#xff08;2&#xff09;字体种类a. 网络安全字体b. 默认字体c. 字体栈 &#xff08;3&#xff09;字体大小&#xff08;4&#xff09;字体样式&#xff08;5&#xff09;字体粗细…

基于SpringBoot+vue的交流互动系统设计与实现

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

C语言strcmp()函数学习

strcmp函数是string compare(字符串比较)的缩写&#xff0c;用于比较两个字符串并根据比较结果返回整数&#xff1b; strcmp(str1,str2)&#xff1b; 若str1str2&#xff0c;则返回零&#xff1b;若str1<str2&#xff0c;则返回负数&#xff1b;若str1>str2&#xff0c;则…