当前位置: 首页 > news >正文

【2373. 矩阵中的局部最大值】

来源:力扣(LeetCode)

描述:

给你一个大小为 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:

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:

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

方法:遍历

思路与算法

设 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] 中。

代码:

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

执行用时:8 ms, 在所有 C++ 提交中击败了98.84%的用户
内存消耗:10.7 MB, 在所有 C++ 提交中击败了87.21%的用户
复杂度分析
时间复杂度:O(n2),其中 n 是矩阵 grid 的行数和列数。
空间复杂度:O(1)。这里不考虑返回值的空间。
author:LeetCode-Solution

http://www.lryc.cn/news/24377.html

相关文章:

  • Read book Netty in action(Chapter VII)--ChannelHandler和ChannelPipeline
  • react的严格模式 和 解决react useEffect执行两次
  • C++中的STL
  • 【沐风老师】3dmax一键窗户生成器插件使用方法详解
  • 【图像处理】数字图像处理基础(分辨率,像素,显示...)
  • UE实现相机飞行效果CesiumForUnreal之DynamicPawn飞行原理浅析
  • AIGC被ChatGPT带火!底层基础算力有望爆发式增长
  • 【链表OJ题(一)】移除链表元素
  • 【解锁技能】学会Python条件语句的终极指南!
  • 如何通过rem实现移动端的适配?
  • 【论文阅读】-姿态识别
  • 3.1 模拟栈+表达式求值
  • 【Python语言基础】——Python 创建表
  • 外贸建站,为什么别人的询盘更多更精准?
  • Gateway集成Netty服务
  • SpringMVC控制层private方法中出现注入的service对象空指针异常
  • 【Unity】P4 脚本文件(基础)
  • (2023版)零基础入门网络安全/Web安全,收藏这一篇就够了
  • Vue3电商项目实战-登录模块2【05-登录-表单校验、06-登录-消息提示组件封装、07-登录-账户登录、08-登录-手机号登录、09-退出登录】
  • Python 中都有哪些常见的错误和异常?
  • 51单片机-1
  • 【Azure 架构师学习笔记】-Azure Data Factory (4)-触发器详解-事件触发器
  • 【项目设计】高并发内存池(三)[CentralCache的实现]
  • 2023年,35岁测试工程师只能被“优化裁员”吗?肯定不是····
  • gitlab部署使用,jenkins部署使用
  • 从零开始的机械臂yolov5抓取gazebo仿真(环境搭建篇下)
  • GCC编译器 MinGW的下载安装使用教程
  • 【项目实战】SpringMVC配置全局属性,是实现WebMvcConfigurer接口,还是直接继承WebMvcConfigurationSupport类?
  • 房产营销、地产中介如何高效低成本获客?
  • Kotlin-作用域函数