首页 > 其他分享 >764. 最大加号标志

764. 最大加号标志

时间:2022-11-09 15:34:58浏览次数:68  
标签:标志 mines 764 网格 grid 加号 &&

764. 最大加号标志

在一个 n x n 的矩阵 grid 中,除了在数组 mines 中给出的元素为 0,其他每个元素都为 1。mines[i] = [xi, yi]表示 grid[xi][yi] == 0

返回  grid 中包含 1 的最大的 轴对齐 加号标志的阶数 。如果未找到加号标志,则返回 0 。

一个 k 阶由 1 组成的 “轴对称”加号标志 具有中心网格 grid[r][c] == 1 ,以及4个从中心向上、向下、向左、向右延伸,长度为 k-1,由 1 组成的臂。注意,只有加号标志的所有网格要求为 1 ,别的网格可能为 0 也可能为 1 。

  • 输入: n = 5, mines = [[4, 2]]
  • 输出: 2
  • 解释: 在上面的网格中,最大加号标志的阶只能是2。一个标志已在图中标出。

题目链接

暴力

循环每一个点,然后判断每个点能组成十字标识的最大值。时间复杂度为O(N^3)。但这题的数据范围很小1 <= n <= 500。于是,尝试着提交了,居然过了。。。。。。

class Solution {
public:
    int orderOfLargestPlusSign(int n, vector<vector<int>>& mines) {
        vector<vector<int>>maps(n,vector<int>(n));
        for(int i=0;i<mines.size();i++){
            maps[mines[i][0]][mines[i][1]]=1;
        }
        int res=0;
        for(int row=0;row<n;row++){
            for(int col=0;col<n;col++){
                //枚举每一个点
                if(!maps[row][col]){
                    int temp=1;
                    int k=1;
                    for(k;(row-k>=0&&row+k<n&&col-k>=0&&col+k<n);k++){
                        if(!(row-k>=0&&row+k<n&&col-k>=0&&col+k<n)) break;
                        if(maps[row+k][col]==0&&maps[row-k][col]==0&&maps[row][col+k]==0&&maps[row][col-k]==0){
                            temp++;
                        }
                        else{
                            break;
                        }
                    }
                    res=max(res,temp);
                }
            }
        }
        return res;
    }
};

标签:标志,mines,764,网格,grid,加号,&&
From: https://www.cnblogs.com/SkyDusty/p/16873886.html

相关文章