力扣解法汇总764. 最大加号标志
目录链接:
力扣编程题-解法汇总_分享+记录-CSDN博客
GitHub同步刷题项目:
https://github.com/September26/java-algorithms
原题链接:力扣
描述:
在一个 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
。
示例 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. 最大加号标志相关推荐
- 力扣解法汇总954-二倍数对数组
目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描 ...
- 力扣解法汇总728-自除数
目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接: 力扣 ...
- 力扣解法汇总2043-简易银行系统
目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms https://g ...
- 力扣解法汇总2315. 统计星号
目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描 ...
- 力扣解法汇总720-词典中最长的单词
目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms https://g ...
- 力扣解法汇总606-根据二叉树创建字符串
目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms https://g ...
- 力扣解法汇总731-我的日程安排表 II
目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描 ...
- 力扣解法汇总648-单词替换
目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描 ...
- 力扣解法汇总661- 图片平滑器
目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描 ...
最新文章
- python使用pandas计算dataframe中每个分组的极差、分组数据的极差(range)、使用groupby函数和agg函数计算分组的最大值和最小值
- codeforces round 418 div2 补题 CF 814 A-E
- apache的rewrite规则无法加载问题
- JAVA API 中文版
- conda创建虚拟环境,拥有多个Anconda版本
- SQL运行速度慢?查查中间件
- Java 线程池 ThreadPoolExecutor源码简析
- 简单的php cms,30个很棒的PHP开源CMS内容管理系统
- 拖放drag、drog
- 制作自定义springboot banner
- Activity的生命周期和启动模式
- imx6ul spi 设备驱动开发
- 在电脑上下载哔哩哔哩中的视频
- 每日一佳——Computational Rationalization: The Inverse Equilibrium Problem(Kevin Waugh et al. ,ICML ,2011)
- 流媒体-RTMP协议-rtmpdump-flv封装解析(一)
- 关于mac地址,请各位大侠帮忙解决
- 如何在一个jsp页面中弹出另一个jsp页面
- Windows Vista 官方中文正式版(MSDN)(转载)
- 多项式拟合 java_最小二乘法多项式拟合的Java实现
- 本科去向选择之一——工作
热门文章
- 转发 2013年度电影100佳
- 安科瑞企业能源管理系统在水泥企业中的设计与应用-Susie 周
- CF794E Choosing Carrot
- Adobe Audition将音频转化为PCM
- 一位算法工程师对自己工作的总结,非常具有借鉴意义!
- uIP宏定义的详细配置
- google的黑镜子 -- 思考技术元素对生活的影响
- linux 1000 ask(转)
- 全国计算机等级考试二级c语言题库有多少套,(详细完整含50套)2020年全国计算机等级考试二级c语言上机精选题库.pdf...
- 如何减少手机辐射?——七招减少手机对您的危害