764. 最大加号标志

在一个大小在 (0, 0) 到 (N-1, N-1) 的2D网格 grid 中,除了在 mines 中给出的单元为 0,其他每个单元都是 1。网格中包含 1 的最大的轴对齐加号标志是多少阶?返回加号标志的阶数。如果未找到加号标志,则返回 0。

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

k 阶轴对称加号标志示例:

阶 1:

000

010

000

阶 2:

00000

00100

01110

00100

00000

阶 3:

0000000

0001000

0001000

0111110

0001000

0001000

0000000

示例 1:

输入: N = 5, mines = [[4, 2]]

输出: 2

解释:

11111

11111

11111

11111

11011

在上面的网格中,最大加号标志的阶只能是2。一个标志已在图中标出。

示例 2:

输入: N = 2, mines = []

输出: 1

解释:

11

11

没有 2 阶加号标志,有 1 阶加号标志。

示例 3:

输入: N = 1, mines = [[0, 0]]

输出: 0

解释:

0

没有加号标志,返回 0 。

提示:

整数N 的范围: [1, 500].

mines 的最大长度为 5000.

mines[i] 是长度为2的由2个 [0, N-1] 中的数组成.

(另外,使用 C, C++, 或者 C# 编程将以稍小的时间限制进行​​判断.)

class Solution { 

    public int orderOfLargestPlusSign(int N, int[][] mines) {
if (N==0)return 0; int max_k=0; //填充一个2D网格matrix出来
int matrix[][] = new int[N][N];
for (int i=0;i<N;i++)
Arrays.fill(matrix[i],1);
int m = mines.length;
for (int i=0;i<m;i++)
matrix[mines[i][0]][mines[i][1]]=0; int dp[][] = new int[N][N];
int count = 0;
//初始化
//求左、右
for (int i=0;i<N;i++){ //求左臂并将值放入dp left->right
count = 0;
for (int j=0;j<N;j++){
count = matrix[i][j]==1?count+1:0;
dp[i][j]= count;
} //求右臂 并将当前dp与右臂之间的最小值放入dp right->left
count = 0;
for (int j=N-1;j>=0;j--){
count = matrix[i][j]==1?count+1:0;
dp[i][j]=Math.min(dp[i][j],count);
}
}
//求上、下
for (int j=0;j<N;j++){
//求上臂 并将当前dp与上臂间的最小值放入dp up->down
count = 0;
for (int i=0;i<N;i++){
count = matrix[i][j]==1?count+1:0;
dp[i][j]=Math.min(dp[i][j],count);
}
//求下臂 并将当前dp与下臂间的最小值放入dp down->up
//此时的整个dp数组中的最大值就是所求的k
count = 0;
for (int i=N-1;i>=0;i--){
count = matrix[i][j]==1?count+1:0;
dp[i][j]=Math.min(dp[i][j],count);
max_k=Math.max(max_k,dp[i][j]);
}
} return max_k;
}
}

Java实现 LeetCode 764 最大加号标志(暴力递推)的更多相关文章

  1. Java实现 LeetCode 741 摘樱桃(DFS || 递推 || 传纸条)

    741. 摘樱桃 一个N x N的网格(grid) 代表了一块樱桃地,每个格子由以下三种数字的一种来表示: 0 表示这个格子是空的,所以你可以穿过它. 1 表示这个格子里装着一个樱桃,你可以摘到樱桃然 ...

  2. Java实现 LeetCode 639解码方法 2(递推)

    639. 解码方法 2 一条包含字母 A-Z 的消息通过以下的方式进行了编码: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 除了上述的条件以外,现在加密字符串可以 ...

  3. Java实现 LeetCode 816 模糊坐标(暴力)

    816. 模糊坐标 我们有一些二维坐标,如 "(1, 3)" 或 "(2, 0.5)",然后我们移除所有逗号,小数点和空格,得到一个字符串S.返回所有可能的原始 ...

  4. Java实现 LeetCode 836 矩形重叠(暴力)

    836. 矩形重叠 矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标. 如果相交的面积为正,则称两矩形重叠.需要明确的 ...

  5. Java实现 LeetCode 835 图像重叠(暴力)

    835. 图像重叠 给出两个图像 A 和 B ,A 和 B 为大小相同的二维正方形矩阵.(并且为二进制矩阵,只包含0和1). 我们转换其中一个图像,向左,右,上,或下滑动任何数量的单位,并把它放在另一 ...

  6. Java实现 LeetCode 824 山羊拉丁文(暴力)

    824. 山羊拉丁文 给定一个由空格分割单词的句子 S.每个单词只包含大写或小写字母. 我们要将句子转换为 "Goat Latin"(一种类似于 猪拉丁文 - Pig Latin ...

  7. Java实现 LeetCode 817 链表组件(暴力)

    817. 链表组件 给定一个链表(链表结点包含一个整型值)的头结点 head. 同时给定列表 G,该列表是上述链表中整型值的一个子集. 返回列表 G 中组件的个数,这里对组件的定义为:链表中一段最长连 ...

  8. Java实现 LeetCode 808 分汤 (暴力模拟)

    808. 分汤 有 A 和 B 两种类型的汤.一开始每种类型的汤有 N 毫升.有四种分配操作: 提供 100ml 的汤A 和 0ml 的汤B. 提供 75ml 的汤A 和 25ml 的汤B. 提供 5 ...

  9. Java实现 LeetCode 799 香槟塔 (暴力模拟)

    799. 香槟塔 我们把玻璃杯摆成金字塔的形状,其中第一层有1个玻璃杯,第二层有2个,依次类推到第100层,每个玻璃杯(250ml)将盛有香槟. 从顶层的第一个玻璃杯开始倾倒一些香槟,当顶层的杯子满了 ...

随机推荐

  1. VS Code的安装与配置

    VS Code的安装与配置 Visual Studio Code(VS Code)是微软旗下的一个开源文本编辑器,支持Windows.macOS.Linux操作系统.数量众多.种类多样的插件极大提高了 ...

  2. Day_09【常用API】扩展案例3_删除源字符串中的指定字符,并计算指定字符出现的次数

    分析以下需求,并用代码实现 1.键盘录入一个源字符串由字符串变量scrStr接收 2.键盘录入一个要删除的字符串由字符串变量delStr接收 3.要求 删除该字scrStr符串中的所有delStr字符 ...

  3. Viterbi-Algorithm(维特比)算法

    CSDN博客:皮乾东  知乎:Htrying  微博:Htring的微博  微信公众号:自然语言处理爱好者(ID:NLP_lover)  文章来自:<数学之美> Viterbi-Algor ...

  4. jmeter录制rabbitmq消息-性能测试

     一.目的 为了测试系统的稳定性,在UAT环境下,通一段时间内不间断发送MQ消息来验证系统是否会出现异常. 二.测试工具 使用测试工具:jmeter5.2.1,火狐浏览器71.0,RabbitMQ管理 ...

  5. python--正则表达式|re模块学习

    学习来源:https://www.liaoxuefeng.com/wiki/1016959663602400/1017639890281664 正则表达式是一种用来匹配字符串的一种强大的武器,用一种描 ...

  6. 微信小程序canvas canvasGetImageData方法真机获得数据显示到image为空白

    方法 wx.canvasGetImageData的参数 width,height 只能是整数

  7. kafka消费者重试逻辑的实现

    背景 在kafka的消费者中,如果消费某条消息出错,会导致该条消息不会被ack,该消息会被不断的重试,阻塞该分区的其他消息的消费,因此,为了保证消息队列不被阻塞,在出现异常的情况下,我们一般还是会ac ...

  8. Python PIL Image图片显示系列

    1. PIL Image图片显示 在使用PIL函数中的Image方法读取图片时,对于图片的shape,可能有不少宝宝存在疑惑.是什么疑惑了?就是image = Image.open(image_pat ...

  9. zabbix 自定义指标数据来源

    1.cpu load https://blog.csdn.net/scugxl/article/details/77199403 1)基本含义:运行队列长度,表示当前有多少个正在等待的进程和正在执行的 ...

  10. postman发送请求携带Cookie

    相关步骤: 1.下载 Postman-Interceptor_v0.2.24.zip插件 2.解压下载好的插件,将其拖到应用配置中 3.复制Postman-Interceptor_v中的id地址 4. ...