【每日一题DAY22】LC764最大加号标志

简介: 思路:对于每个中心点坐标 (i,j)分别从上下左右四个方向计算以 (i,j)末尾的最长连续 1的个数,那么以(i,j)为中心的最大加号的标志为其最小值

在一个 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 。


补补补!


  • 思路:对于每个中心点坐标 (i,j)分别从上下左右四个方向计算以 (i,j)末尾的最长连续 1的个数,那么以(i,j)为中心的最大加号的标志为其最小值


  • 创建grid矩阵和dp时,为了防止越界,因此上下左右都扩展边界


  • 动态规划实现


1.确定dp数组(dp table)以及下标的含义


dp[i][j][k]:f方向为k的以 (i,j)末尾的最长连续 1的个数


2.确定递推公式


。grid[i][j]=0,dp[i][j][k]=0


。grid[i][j]=1


  • k=0,向下:dp[i][j][k]=dp[i][j-1][k]+1


  • k=1,向上:dp[i][j][k]=dp[i][j+1][k]+1


  • k=2,向右:dp[i][j][k]=dp[i-1][j][k]+1


  • k=3,向左:dp[i][j][k]=dp[i+1][j][k]+1


3.dp数组如何初始化


dp[i][j][k]=false;


4.确定遍历顺序


。k=0,上:正序j

。k=1,下:逆序j

。k=2,左:正序i

。k=3,右:逆序i


  • 代码


class Solution {
    public int orderOfLargestPlusSign(int n, int[][] mines) {
        int[][] grid = new int[n + 2][n + 2];
        int[][][] dp = new int[n + 2][n + 2][4];
        // 初始化grid
        for (int i = 1; i <= n; i++){
            Arrays.fill(grid[i],1);
        }
        for (int[] mine : mines){
            grid[mine[0]+1][mine[1]+1] = 0;
        }
        // 更新dp
        for (int i = 1; i <= n; i++){
            for (int j = 1; j <= n; j++){
                if (grid[i][j] == 1){
                    dp[i][j][0] = dp[i][j-1][0] + 1;
                    dp[i][j][2] = dp[i-1][j][2] + 1;
                }
            }
        }
        for (int i = n; i >= 0; i--){
            for (int j = n; j >= 0; j--){
                if (grid[i][j] == 1){
                    dp[i][j][1] = dp[i][j+1][1] + 1;
                    dp[i][j][3] = dp[i+1][j][3] + 1;
                }
            }
        }
        int res = 0;
        for (int i = 1; i <= n; i++){
            for (int j = 1; j <= n; j++){
                res = Math.max(res,Math.min(Math.min(dp[i][j][0],dp[i][j][1]),Math.min(dp[i][j][2],dp[i][j][3])));
            }
        }
       return res;
    }
}


  • 复杂度


。时间复杂度:O ( n 2 )

。空间复杂度:O ( n 2 )

目录
相关文章
|
算法 网络协议 Linux
【Cisco Packet Tracer】交换机的自学习算法
【Cisco Packet Tracer】交换机的自学习算法
685 0
|
消息中间件 监控 Kafka
Kafka集群监控系统Kafka Eagle部署与体验
Kafka集群监控系统Kafka Eagle部署与体验
903 0
Kafka集群监控系统Kafka Eagle部署与体验
|
移动开发 JavaScript Oracle
Oracle根据汉字取拼音首字母的function
Oracle根据汉字取拼音首字母的function
9164 0
|
8月前
|
敏捷开发 人工智能 自然语言处理
 未来已来:2025年如何打造自适应的智能优先级管理平台
项目优先级管理工具历经四代技术演进,从手工清单发展到AI驱动的自适应系统,不断提升决策效率与科学性。面对数字化转型,新一代工具实现战略对齐、动态评估与智能推荐,结合NLP、资源优化算法与协同机制,助力组织高效决策。未来,神经符号系统与量子算法将推动优先级管理迈向更高智能化水平。
317 0
|
5月前
|
人工智能 数据安全/隐私保护
深度解读 | 变化中的1688,所有运营动作,都应回归这3个要点!
面对1688持续的规则调整与业务更新,许多1688运营感到措手不及——旧的运营逻辑尚未理清,新的变化又接踵而至。在这种快速迭代的环境中,该如何找到确定性方向?其实,万变不离其宗,只要抓住以下几个核心要点,就能在变化中稳住阵脚,找到突破路径。
|
人工智能 安全 专有云
2024云栖大会专有云产品技术论坛开放报名
飞天企业版是阿里云为政企客户构建的企业级专有云平台,与阿里云公共云同根同源。面向智能时代,飞天企业版再次升级。本论坛将系统介绍飞天企业版在一云多芯、一云多算等方面的最新能力升级,并围绕智算场景,分享底层平台支撑能力和上层智能应用实践,为政企打造新一代稳定安全、开放智能的大规模AI基础设施,助力智能化应用在政企全面落地。
357 8
|
设计模式 算法 关系型数据库
23种设计模式总结
23种设计模式总结
348 0
|
11月前
|
数据采集 人工智能 边缘计算
爬虫IP代理效率优化:策略解析与实战案例
本文深入探讨了分布式爬虫中代理池效率优化的关键问题。首先分析了代理效率瓶颈的根源,包括不同类型代理的特点、连接耗时及IP失效问题。接着提出了六大核心优化策略:智能IP轮换矩阵、连接复用优化、动态指纹伪装、智能重试机制等,并结合电商价格监控、社交媒体舆情分析和金融数据抓取三个实战案例,展示了优化效果。同时建立了三维效率评估体系,从质量、成本和稳定性全面衡量性能。最后展望了AI驱动调度、边缘计算融合等未来演进方向,帮助爬虫系统实现从“暴力采集”到“智能获取”的进化,大幅提升效率并降低成本。
437 0
|
弹性计算 网络安全 数据安全/隐私保护
三分钟在阿里云搭建自己的帕鲁服务器
《幻兽帕鲁》是Pocketpair投资10亿日元(约合人民币4842万元),耗费近4年时间开发的一款开放世界生存制作游戏,游戏于2023年11月2日至11月5日进行了封闭网络测试,于2024年1月18日发行抢先体验版本 。 游戏中,玩家可以在广阔的世界中收集神奇的生物“帕鲁”,派他们进行战斗、建造、做农活,工业生产等。 在帕鲁的世界,玩家可以选择与神奇的生物“帕鲁”一同享受悠闲的生活,也可以投身于与偷猎者进行生死搏斗的冒险。 帕鲁可以进行战斗、繁殖、协助玩家做农活,也可以为玩家在工厂工作。 玩家也可以将它们进行售卖,或肢解后食用。
761 10
三分钟在阿里云搭建自己的帕鲁服务器
|
安全 网络安全 网络虚拟化
GRE over IPsec 之总部静态固定 IP 与分部 PPPoE 动态 IP 部署 Hub_and_Spoke
在现代企业网络中,广域网(WAN)连接的安全性和可靠性至关重要。GRE over IPsec 是一种常用的方案,它将 GRE 隧道与 IPsec 加密相结合,实现数据安全传输。本文将详细介绍如何在总部使用静态固定 IP 和分部使用 PPPoE 动态 IP 的环境下,部署 Hub-and-Spoke 模式的 GRE over IPsec 配置。
536 14