leetcode刷题记录:[764]最大加号标志

764. 最大加号标志 一个k它的中心格子为;它的上下左右四个方向各延伸k-1个连续的1,总共4*(k-1)+1个1构成一个加号。例如,k = 2时的加号如下所示(10 1 01 1 10 1 0这道题看似复杂,实则是典型的“二维动态规划”问题。关键在于如何预处理并快速获取四个方向的连续 1 长度。掌握这类“方向统计”技巧,在很多矩阵类问题中都能派上用场。 阅读详情

题目:

在一个 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) 都 不重复

Related Topics

  • 数组
  • 动态规划

思路:

定义一个三维数组,前两个值分别代表其点的横纵坐标,第三个值代表其值。然后分别计算各点各方向的阶。采用动态规划的思想。

代码:

class Solution {
    public int orderOfLargestPlusSign(int n, int[][] mines) {
        // 初始化4个方向的阶
        int [][][] dp = new int[n][n][4];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                for (int k = 0; k < 4; k++) dp[i][j][k] = 1;
            }
        }
        for (int[] z : mines) {
            for (int k = 0; k < 4; k++) {
                dp[z[0]][z[1]][k] = 0;
            }
        }
        // 算左和上方向的阶
        for (int i = 1; i < n; i++) {
            for (int j = 1; j < n; j++) {
                if (dp[i][j][0] == 0){
                    continue;
                }
                dp[i][j][0] = 1 + dp[i][j-1][0];
                dp[i][j][1] = 1 + dp[i-1][j][1];
            }
        }

         // 算右和下方向的阶
        for (int i = n-2; i >= 0; i--) {
            for (int j = n-2; j >= 0 ; j--) {
                if (dp[i][j][2] == 0){
                    continue;
                }
                dp[i][j][2] = 1 + dp[i][j+1][2];
                dp[i][j][3] = 1 + dp[i+1][j][3];
            }
        }

        // 遍历各点各方向的值
        int res = 0;
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                int k = Math.min(Math.min(dp[i][j][0], dp[i][j][1]), Math.min(dp[i][j][2],  dp[i][j][3]));
                res = Math.max(res,k);
            }
        }
        return res;
    }
}

[Ethernet in CANoe]4--CANoe工程中SOME/IP报文的详细介绍(二) 介绍了SOME/IP报文的SD报文(ServiceDiscovery),本片文章开始继续介绍SOME/IP报文。 阅读详情

相关推荐

Protege新手入门:5分钟搞定本体建模基础(附实战案例)

本文为Protege本体建模新手提供了一份快速入门指南。通过构建一个关于“披萨”的实战案例,详细讲解了从环境准备、定义核心类(Classes)、建立对象属性(Object Properties)到设置数据属性(Data Properties)和创建个体的完整流程。文章旨在帮助读者绕过复杂理论,在5分钟内直观掌握本体建模的基础操作,快速建立知识图谱构建的信心。

weixin_28335283的博客 283

LeetCode第 764 题:最大加号标志(C++)

764. 最大加号标志 - 力扣(LeetCode) 题目读懂都需要点时间 和LeetCode第 221 题:最大正方形(C++)_zj-优快云博客有点类似,但是如果以某个点为+的中心考虑dp的话,需要考虑上下左右四个方向上连续1的个数,然后取最小值,但是怎么dp才能涉及四个方向呢? 难道需要事先计算一个数组(NN4)记录四个方向上连续1的个数吗?这也太暴力了。。。 不过还是先写出来,虽然效率很差,但还是通过了: class Solution { public: int orderOfLar

zj 449

Latex里面关于作者名字显示有灰色; 二级+三级标题斜体;

Latex里面关于 作者名字显示有灰色; 二级+三级标题斜体,与正文的距离; 邮箱字体;ORCID字体设置(整理不易,请先关注,Thanks)

m0_61015717的博客 746

LeetCode 764. 最大加号标志(DP)

文章目录1. 题目2. 解题 1. 题目 在一个大小在 (0, 0) 到 (N-1, N-1) 的2D网格 grid 中,除了在 mines 中给出的单元为 0,其他每个单元都是 1。网格中包含 1 的最大的轴对齐加号标志是多少阶?返回加号标志的阶数。如果未找到加号标志,则返回 0。 一个 k" 阶由 1 组成的“轴对称”加号标志具有中心网格 grid[x][y] = 1 ,以及4个从中心向上、向下、向左、向右延伸,长度为 k-1,由 1 组成的臂。 下面给出 k" 阶“轴对称”加号标志的示例。 注意,只

Michael是个半路程序员 843

光伏发电系统模拟及其发电预测开源python工具pvlib

本文介绍光伏发电系统模拟及其发电预测开源python工具pvlib,以及举例介绍获取辐照度方法、光伏发电预测思路。

肖永威的专栏 1万+

ESP32S3电池电量监测实战:从分压电路到IDF组件配置(附GitHub源码)

本文详细介绍了ESP32S3电池电量监测的完整实战方案。从硬件分压电路的电阻选型、滤波设计,到软件层面利用ESP-IDF的ADC校准机制提升精度,并重点讲解了如何集成bat_monitor开源组件快速实现电压采集、电量计算、充电检测与事件通知。文章提供了从原理到调试的完整指南和GitHub源码,帮助开发者构建稳定可靠的物联网设备电源管理系统。

ee345的博客 530

LeetCode-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 ,别的网格可能

zik的博客 813

1、Ovirt 开源虚拟化平台安装

Ovirt虚拟化Node和Engine安装

大鱼 6266

​力扣解法汇总764. 最大加号标志

​力扣解法汇总764. 最大加号标志

分享+记录 755

基于YOLOv5的仪表读数识别系统:从检测到识别的完整解决方案

随着工业自动化水平的不断提高,仪表读数识别技术在电力系统、石油化工、智能制造等领域发挥着越来越重要的作用。本文提出了一种基于YOLOv5的仪表自动读数识别系统,该系统能够有效区分指针式和数字式仪表,并实现高精度的读数识别。我们详细介绍了系统的整体架构、数据集构建、模型训练策略以及用户界面设计,并提供了完整的代码实现。实验结果表明,本系统在仪表检测和读数识别任务上均取得了优异的表现,为工业现场的自动化监控提供了可靠的技术支持。关键词:仪表读数识别;YOLOv5;目标检测;深度学习;工业自动化。

YOLO 678

ResNet改进(7):添加 SK注意力机制

实现 SK 注意力机制。

2401_82355416的博客 732

764. 最大加号标志-M

764. 最大加号标志-M label: 能算dp吗? 在一个大小在 (0, 0) 到 (N-1, N-1) 的2D网格 grid 中,除了在 mines 中给出的单元为 0,其他每个单元都是 1。网格中包含 1 的最大的轴对齐加号标志是多少阶?返回加号标志的阶数。如果未找到加号标志,则返回 0。 一个 k" 阶由 1 组成的“轴对称”加号标志具有中心网格 grid[x][y] = 1 ,以及4...

longtails的博客 619

【Microchip】微芯 MPLAB® X IDE开发环境新建项目(点亮1颗LED灯)(常用右键菜单快捷键)

1.新建项目2. 选择芯片型号和调试器3.选择编译器4.项目命名和选择文件路径5.新建成功,给项目添加main.c7.将新建的mainXC16.c文件添加进项目6000000UL这三个就是。

Naiva的博客 451

LeetCode 764. Largest Plus Sign(最大加号标志)

题目 在一个大小在 (0, 0) 到 (N-1, N-1) 的2D网格 grid 中,除了在 mines 中给出的单元为 0,其他每个单元都是 1。网格中包含 1 的最大的轴对齐加号标志是多少阶?返回加号标志的阶数。如果未找到加号标志,则返回 0。 一个 k&quot; 阶由 1 组成的“轴对称”加号标志具有中心网格 grid[x][y] = 1 ,以及4个从中心向上、向下、向左、向右延伸,长度为 k-1...

马一凡的博客 543

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

LeetCode_动态规划_中等_764.最大加号标志

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

代码星辰的博客 404

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Leetcode刷题c++之764. 最大加号标志

Leetcode刷题c++之764. 最大加号标志

weixin_45175664的博客 252

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

LeetCode 764. 最大加号标志

LeetCode第764题 最大加号标志 题解,动态规划的经典应用。

weixin_44027021的博客 340

LeetCode每日一题764. 最大加号标志

LeetCode每日一题764. 最大加号标志

weixin_46566527的博客 335

【LeetCode每日一题:764.最大加号标志~~~暴力枚举+动态规划】

【LeetCode每日一题:764.最大加号标志~~~暴力枚举+动态规划】一个 k 阶由 1 组成的 “轴对称”加号标志 具有中心网格 grid[r][c] == 1 ,以及4个从中心向上、向下、向左、向右延伸,长度为 k-1,由 1 组成的臂。注意,只有加号标志的所有网格要求为 1 ,别的网格可能为 0 也可能为 1。在一个 n x n 的矩阵 grid 中,除了在数组 mines 中给出的元素为 0,其他每个元素都为 1。mines[i] = [xi, yi]表示 grid[xi][yi] == 0。

Coder_ljw的博客 302

LeetCode-764-最大加号标志

而后我们遍历每一个位置,在他的四个方向上选择最小值作为当前的最大边长。来表示左、上、右、下四个方向。位上的元素在四个方向上连续出现1的次数。

L.Wzz的博客 426

LeetCode-【动态规划】- 最大加号标志

在一个大小在 (0, 0) 到 (N-1, N-1) 的2D网格 grid 中,除了在 mines 中给出的单元为 0,其他每个单元都是 1。网格中包含 1 的最大的轴对齐加号标志是多少阶?返回加号标志的阶数。如果未找到加号标志,则返回 0。 一个 k" 阶由 1 组成的“轴对称”加号标志具有中心网格  grid[x][y] = 1 ,以及4个从中心向上、向下、向左、向右延伸,长度为 k-1,由...

代码屋-CODE HOUSE 977

leetcode764+最大的十字架Dp

https://leetcode.com/problems/largest-plus-sign/ class Solution { public: int orderOfLargestPlusSign(int N, vector&lt;vector&lt;int&gt;&gt;&amp; mines) { int res = 0, cnt = 0; ve...

小堃哥的专栏 429

764. 最大加号标志 ----- 动态规划、C++ STL:无序set容器unordered_set、分类思想

在一个 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个从中...

Mercury_cc的博客 60

[WXM] LeetCode 764. Largest Plus Sign C++

764. Largest Plus Sign In a 2D grid from (0, 0) to (N-1, N-1), every cell contains a 1, except those cells in the given list mines which are 0. What is the largest axis-aligned plus sign of 1s contai...

WXM 357

LeetCode 每日一题 2022/11/7-2022/11/13

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步

AlphaTao的博客 433

矩阵遍历算法:面试必备的四种范式与优化技巧

矩阵遍历是算法与数据结构中的基础操作,广泛应用于图像处理、动态规划、图论建模等领域。其核心原理是通过行列索引的精确控制,实现对二维数据结构的系统访问。在技术实现上,顺序遍历、螺旋遍历、对角线遍历和旋转遍历构成了四种基础范式,每种范式都需要处理独特的边界条件和索引计算。优化技巧如方向数组、虚拟边界和原地修改能显著提升代码效率,这些方法在LeetCode等算法题库中频繁出现。掌握矩阵遍历不仅能解决岛屿计数、矩阵旋转等经典问题,更是处理动态规划、广度优先搜索等进阶算法的基础。特别是在算法面试中,约60%的数组类问

weixin_30315905的博客 773
上一篇: leetcode刷题记录:[217]存在重复元素
人还未醒
博客等级 码龄9年 7粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值