2373. 矩阵中的局部最大值

简介: 给你一个大小为 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 矩阵中的最大值。返回生成的矩阵。

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

生成一个大小为 (n - 2) x (n - 2) 的整数矩阵  maxLocal ,并满足:

maxLocali 等于 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 <= gridi <= 100

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/largest-local-values-in-a-matrix

c++代码实现:

class Solution {
public:

vector<vector<int>> largestLocal(vector<vector<int>>& grid) {
    int n=grid.size();
    vector<vector<int>> ret(n-2,vector<int>(n-2,0)); 
    //用于保存返回的结果
    for(int i=0;i<n;i++)
      {   

// 第i行第j个元素保存 gridi,gridi,gridi的最大值,最左边的位置来保存,这样覆盖不掉后面的元素

      for(int j=0;j+2<n;j++)
       {

//j+2确保后面有3个元素

gridi=max(gridi,max(gridi,gridi));//也是向左覆盖

        }
    }
    for(int j=0;j+2<n;j++)
 { 

// 只需要计算n-2列就可以了,比如某j列中的第i个元素,保存 gridi,gridi,gridi的最大值,

    //同理,某j列中的第i+1个元素,保存 grid[i+1][j],grid[i+1][j+1],grid[i+1][j+2]的最大值

可以直接放到ret里

        for(int i=0;i+2<n;i++)
        {
            ret[i][j]=max(grid[i][j],max(grid[i+1][j],grid[i+2][j]));
        }
    }
    return ret;
}

};
二:
class Solution {
public:

vector<vector<int>> largestLocal(vector<vector<int>>& grid) {
     int n = grid.size();

vector<vector> res(n - 2, vector(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;
}

};

目录
相关文章
|
7月前
如何判别三角形和求10 个整数中最大值?
如何判别三角形和求10 个整数中最大值?
|
7月前
|
算法 前端开发
最小化数组中的最大值
最小化数组中的最大值
53 0
|
2月前
|
数据采集 机器学习/深度学习 数据可视化
最大值归一化介绍
【10月更文挑战第2天】
147 0
|
6月前
技术心得记录:可决系数R^2和方差膨胀因子VIF
技术心得记录:可决系数R^2和方差膨胀因子VIF
77 0
|
7月前
L1-048 矩阵A乘以B
L1-048 矩阵A乘以B
59 0
|
7月前
|
机器学习/深度学习 存储 人工智能
利用前缀和计算二维矩阵子矩阵的和
利用前缀和计算二维矩阵子矩阵的和
86 0
|
算法
算法篇之二分查找(第74题探索二维矩阵、第287题寻找重复数)
算法篇之二分查找(第74题探索二维矩阵、第287题寻找重复数)
119 0
|
资源调度 PyTorch 算法框架/工具
pytorch 如何生成指定位置、尺度参数的随机高斯矩阵,并指定这个随机矩阵的形式
在上述代码中,我们使用 torch.normal(mean=mu, std=sigma, size=(m, n)) 函数直接生成了一个形状为 (m, n) 的随机高斯矩阵 data,其中 mean 参数指定了均值,std 参数指定了标准差。 需要注意的是,与 torch.randn() 不同,torch.normal() 生成的是具有指定均值和标准差的高斯分布,因此生成的随机矩阵不一定是标准正态分布。如果需要生成标准正态分布随机矩阵,可以将 mean 参数设置为 0,std 参数设置为 1。
1209 1
7-93 矩阵A乘以B
7-93 矩阵A乘以B
133 0
|
人工智能
求矩阵的局部极大值
求矩阵的局部极大值
126 0

热门文章

最新文章