目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣

描述:

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

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

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

示例 1:

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

示例 2:

输入: n = 1, mines = [[0, 0]]
输出: 0
解释: 没有加号标志,返回 0 。

提示:

  • 1 <= n <= 500
  • 1 <= mines.length <= 5000
  • 0 <= xi, yi < n
  • 每一对 (xi, yi) 都 不重复

解题思路:

* 解题思路:
* 我们先用一种最笨的方法来实现,首先构建一个二维数组,对应的就是n*n的矩阵上的每个数字的值,然后把mines进行填充。
* 然后从最中间开始搜索,一层一层往外搜索每个点所对应的最大阶数,如果最大阶数达到理论上的最大值,则直接返回即可。
* 然后我们再看如何优化,每一行进行遍历搜索的时候,如果第n位读到了0,则说明至少n+i范围内,最大值就是i,而且如果存在,这个点的坐标一定是n+i。
* 此时,我们可以让当前的最大长度result为i,直接跳过中间的部分,直接从n+result位开始搜索,大幅节省计算时间。
* 这个优化方案就先不写了

代码:

public class Solution764 {public int orderOfLargestPlusSign(int n, int[][] mines) {int[][] matrix = new int[n][n];for (int i = 0; i < matrix.length; i++) {for (int j = 0; j < matrix.length; j++) {matrix[i][j] = 1;}}for (int[] mine : mines) {matrix[mine[0]][mine[1]] = 0;}int result = 0;int centerX = n % 2 == 1 ? (n - 1) / 2 : n / 2;for (int step = 0; step <= centerX; step++) {for (int y = centerX - step; y <= centerX + step; y++) {int maxLength = centerX - step + 1;for (int x = centerX - step; x <= centerX + step; x++) {result = Math.max(result, searchMaxLength(x, y, matrix, maxLength));if (maxLength == result) {return result;}}}}return result;}private int searchMaxLength(int x, int y, int[][] matrix, int maxlength) {if (y < 0 || y >= matrix.length || x < 0 || x >= matrix.length) {return 0;}int value = matrix[y][x];if (value == 0) {return 0;}int length = 1;for (; length <= maxlength; ) {if (y + length >= matrix.length || matrix[y + length][x] == 0) {break;}if (y - length < 0 || matrix[y - length][x] == 0) {break;}if (x + length >= matrix.length || matrix[y][x + length] == 0) {break;}if (x - length < 0 || matrix[y][x - length] == 0) {break;}length++;}return length;}}

​力扣解法汇总764. 最大加号标志相关推荐

  1. ​力扣解法汇总954-二倍数对数组

    目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描 ...

  2. ​力扣解法汇总728-自除数

    目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接: 力扣 ...

  3. 力扣解法汇总2043-简易银行系统

    目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms https://g ...

  4. ​力扣解法汇总2315. 统计星号

    目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描 ...

  5. 力扣解法汇总720-词典中最长的单词

    目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms https://g ...

  6. ​力扣解法汇总606-根据二叉树创建字符串

    目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms https://g ...

  7. ​力扣解法汇总731-我的日程安排表 II

    目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描 ...

  8. ​力扣解法汇总648-单词替换

    目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描 ...

  9. 力扣解法汇总661- 图片平滑器

    目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描 ...

最新文章

  1. python使用pandas计算dataframe中每个分组的极差、分组数据的极差(range)、使用groupby函数和agg函数计算分组的最大值和最小值
  2. codeforces round 418 div2 补题 CF 814 A-E
  3. apache的rewrite规则无法加载问题
  4. JAVA API 中文版
  5. conda创建虚拟环境,拥有多个Anconda版本
  6. SQL运行速度慢?查查中间件
  7. Java 线程池 ThreadPoolExecutor源码简析
  8. 简单的php cms,30个很棒的PHP开源CMS内容管理系统
  9. 拖放drag、drog
  10. 制作自定义springboot banner
  11. Activity的生命周期和启动模式
  12. imx6ul spi 设备驱动开发
  13. 在电脑上下载哔哩哔哩中的视频
  14. 每日一佳——Computational Rationalization: The Inverse Equilibrium Problem(Kevin Waugh et al. ,ICML ,2011)
  15. 流媒体-RTMP协议-rtmpdump-flv封装解析(一)
  16. 关于mac地址,请各位大侠帮忙解决
  17. 如何在一个jsp页面中弹出另一个jsp页面
  18. Windows Vista 官方中文正式版(MSDN)(转载)
  19. 多项式拟合 java_最小二乘法多项式拟合的Java实现
  20. 本科去向选择之一——工作

热门文章

  1. 转发 2013年度电影100佳
  2. 安科瑞企业能源管理系统在水泥企业中的设计与应用-Susie 周
  3. CF794E Choosing Carrot
  4. Adobe Audition将音频转化为PCM
  5. 一位算法工程师对自己工作的总结,非常具有借鉴意义!
  6. uIP宏定义的详细配置
  7. google的黑镜子 -- 思考技术元素对生活的影响
  8. linux 1000 ask(转)
  9. 全国计算机等级考试二级c语言题库有多少套,(详细完整含50套)2020年全国计算机等级考试二级c语言上机精选题库.pdf...
  10. 如何减少手机辐射?——七招减少手机对您的危害