【每日一题Day121】LC1139最大的以 1 为边界的正方形 | 前缀和数组 + 枚举

news2024/11/17 11:46:05

最大的以 1 为边界的正方形【LC1139】

给你一个由若干 01 组成的二维网格 grid,请你找出边界全部由 1 组成的最大 正方形 子网格,并返回该子网格中的元素数量。如果不存在,则返回 0

写了50分钟写出来了 思路是对的 但就是不够清晰 并且想着先写再说 然后越写越有点乱 感觉是个坏习惯 以后还是得想清楚了再写 不然好浪费时间呐

写出来了还是心满意足的 java时间2ms 100%

  • 思路:

    • 使用前缀和数组记录每个位置向左和向上连续1的个数,记为 r o w s [ i ] [ j ] rows[i][j] rows[i][j] c o l s [ i ] [ j ] cols[i][j] cols[i][j]

    • 然后使用变量a记录当前成立的正方形的最大边长,枚举正方形的每个右上顶点 ( i , j ) (i,j) (i,j),其向左连续1的个数为 r o w s [ i ] [ j ] rows[i][j] rows[i][j],当该正方形的边长大于 a a a时才会对结果有影响,因此当 r o w s [ i ] [ j ] > a rows[i][j] \gt a rows[i][j]>a时,枚举该正方形可能的边长$b \in (a,rows[i][j]] $,判断该正方形是否合法。

    • 该正方形的四个顶点如下图所示,如果B顶点向上连续1的个数和向左连续1的个数大于等于b,并且C顶点向上连续1的个数大于等于b,那么该正方形成立

      image-20230217102323194

  • 实现

    class Solution {
        public int largest1BorderedSquare(int[][] grid) {
            int n = grid.length;
            int m = grid[0].length;
            int[][] rows = new int[n + 1][m + 1];
            int[][] cols = new int[n + 1][m + 1];
            for (int i = 0; i < n; i++){
                for (int j = 0; j < m; j++){
                    if (grid[i][j] == 1){
                        rows[i + 1][j + 1] = rows[i + 1][j] + 1;
                    }                
                }
            }
            for (int i = 0; i < m; i++){
                for (int j = 0; j < n; j++){
                    if (grid[j][i] == 1){
                        cols[j + 1][i + 1] = cols[j][i + 1] + 1;
                    }                
                }
            }
            int a = 0;// 边长
            for (int i = 1; i <= n ; i++){
                for (int j = 1; j <= m ; j++){
                    for (int b = rows[i][j]; b > a; b--){
                        if (b > a && i + b - 1 <= n 
                            && rows[i + b - 1][j] >= b 
                            && cols[i + b - 1][j - b + 1] >= b 
                            && cols[i + b - 1][j] >= b){
                            a = b;
                            break;
                        }
                    }
                    
                }
            }
            return a * a;
    
        }
    }
    
    • 复杂度
      • 时间复杂度: O ( n 2 ) O(n^2) O(n2)
      • 空间复杂度: O ( n 2 ) O(n^2) O(n2)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/353561.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ACPI on ARMv8 Servers

文章目录前言一、Why ACPI on ARM&#xff1f;二、Kernel Compatibility三、Relationship with Device Tree四、Booting using ACPI tables五、ACPI Detection六、Device Enumeration七、Driver Recommendations参考资料前言 ARM64处理器除了可以用设备树&#xff08;DT&#…

V90伺服驱动器设置IP地址和PN设备名称的具体方法(2种)

V90伺服驱动器设置IP地址和PN设备名称的具体方法(2种) 1. 通过V-ASSISTANT软件进行配置 首先下载并安装V-ASSISTANT软件,然后将V90通过网线连接到电脑上,注意此时电脑使用的网卡,不能选择无线网卡, SINAMICS-V90伺服调试软件V-ASSISTANT_V1.07.01 打开V-ASSISTANT软件,…

Java 基础面试题——面向对象

目录1.面向对象和面向过程有什么区别&#xff1f;2.面向对象的有哪些特征?3.静态变量和实例变量有什么区别&#xff1f;4.Java 对象实例化顺序是怎样的&#xff1f;5.浅拷贝和深拷贝的区别是什么&#xff1f;5.1.浅拷贝5.2.深拷贝5.3.总结6.Java 中创建对象的方式有哪几种&…

Qt代码单元测试以及报告生成

简介 单元测试是所有测试中最底层的一类测试&#xff0c;是第一个环节&#xff0c;也是最重要的一个环节&#xff0c;是唯一一次有保证能够代码覆盖率达到100%的测试&#xff0c;是整个软件测试过程的基础和前提&#xff0c;单元测试防止了开发的后期因bug过多而失控&#xff0…

< elementUi 组件插件: el-table表格拖拽修改列宽及行高 及 使用注意事项 >

elementUi 组件插件&#xff1a; el-table拖拽修改列宽及行高 及 使用注意事项&#x1f449; 资源Js包下载及说明&#x1f449; 使用教程> 实现原理> 局部引入> 全局引入 &#xff08;在main.js中&#xff09;&#x1f449; 注意事项往期内容 &#x1f4a8;&#x1f4…

Android Studio adb命令

Android Studio在IP连接142的手机进行无线调试 adb tcpip 5555 // 端口 adb shell ifconfig wlan0 //查看ip adb connect 192.168.1.142:5555 当已经连接上142这个ip&#xff0c;还想再连接其他143这个ip 方法如下&#xff1a; adb devices -l 查看当前设备 adb …

直接下载docker镜像包

这周正在做APIcat的企业版研发&#xff0c;准备适配阿里云的计算巢提供企业直接云安装的功能&#xff0c;顺便把原来写过的一个直接下载docker镜像包的小程序挂到了Gitee上面&#xff0c;有需要的可以点击下载 https://gitee.com/extrame/dgethttps://gitee.com/extrame/dget …

安灯呼叫系统助力企业实现精益管理

在当前的生产企业管理过程当中&#xff0c;生产现场难免会出现各种异常情况影响生产&#xff0c;乳设备需要机修、品质问题、物料呼叫等各种情况&#xff0c;在以往这些问题出现过后处理的方式都是些申请单&#xff0c;由人工到各个部门去给领导签字&#xff0c;浪费大量时间沟…

【Unity VR开发】结合VRTK4.0:远距离抓取物体

语录&#xff1a; 我们都生活在阴沟里&#xff0c;但仍有人仰望星空。 前言&#xff1a; 空间场景中的一个常见问题是试图抓取一个无法触及或太远而无法到达的对象。VRTK提供了一种简单的方法来实现这种技术&#xff08;Interactions.PointerInteractors.DistanceGrabber&…

上市公司每股社会贡献值(数据+代码)(2000-2020年)

数据来源&#xff1a;自我整理 时间跨度&#xff1a;2000-2020年 区域范围&#xff1a;上市公司 指标说明&#xff1a; 每股社会贡献值( 净利润所得税费用营业税金及附加支付给职工以及为职工支付的现金本期应付职工薪酬-上期应付职工薪酬财务费用捐赠-排污费及清理费) / 期…

MySQL服务器体系架构 执行原理

前言 前边我们了解了MySQL采用客户端/服务器架构&#xff0c;用户通过客户端程序发送增删改查需求&#xff0c;服务器程序收到请求后处理&#xff0c;并且把处理结果返回给客户端。这篇文章主要看下MySQL服务端是如何处理客户端的请求&#xff0c;感兴趣的小伙伴们可以参考借鉴…

【单目标优化算法】烟花优化算法(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

定时器设计

定时器设计 定时器应用&#xff1a; 游戏的Buff实现&#xff0c;Redis中的过期任务&#xff0c;Linux中的定时任务等等心跳检测&#xff0c;如服务器接收队列满了&#xff0c;tcp客户端会定时探测是否能够发送数据 定时器数据结构选取要求&#xff1a; 需要快速找到到期任务…

防火墙设置实验(12)

预备知识防火墙基本原理 防火墙是一种访问控制技术&#xff0c;位于可信与不可信网络之间&#xff0c;通过设置一系列安全规则对两个网络之间的通信进行控制&#xff0c;检测交换的信息&#xff0c;防止对信息资源的非法存取和访问。防火墙分为软防火墙和硬防火墙&#xff0c;一…

关于分布式的一些基础知识

1、分布式锁 (ngix,zoomkeeper,raft,kafka) 在单机场景下&#xff0c;可以使用语言的内置锁来实现进程或者线程同步。但是在分布式场景下&#xff0c;需要同步的进程可能位于不同的节点上&#xff0c;那么就需要使用分布式锁。 为了保证一个方法或属性在高并发情况下的同一时间…

【面试题】前端春招第二面

不容错过的一些面试题小细节&#xff0c;话不多说&#xff0c;直接看题~大厂面试题分享 面试题库后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★地址&#xff1a;前端面试题库HTML/CSS/Javascript/ES篇&#xff08;1&#xff09;标准盒模型和怪异盒…

k8s集群概念组件简介

一、Kubernetes 集群概述1.2 Kubernetes 资源资源用途服务&#xff08;Service&#xff09;Kubernetes 使用服务在一组 pod 上公开正在运行的应用程序。ReplicaSetKubernetes 使用 ReplicaSet 来维护恒定的 pod 号。Deployment维护应用程序生命周期的资源对象。1.3 Kubernetes …

重生之我是赏金猎人-SRC漏洞挖掘(七)-看我如何从FUZZ到SRC官网XSS

0x01 前奏 本文来自&#xff1a;RGM78sec 截至发稿&#xff0c;vuln早已修复 前不久在挖掘某SRC时&#xff0c;偶然在该SRC官网的编辑器发现了一个接口。 起初以为是任意文件包含能RCE了&#xff0c;后来测试发现只是拼接读取了远程资源站的图片&#xff0c;原本都想着放弃…

TypeScript(二)基本数据类型

前言 距离上篇博客已有两年了&#xff0c;对TS也有了一定的认识&#xff0c;于是计划继续更新系列文章 基本数据类型 在JS中&#xff0c;基本数据类型有&#xff1a;Boolan&#xff08;布尔&#xff09;&#xff0c;Number&#xff08;数字&#xff09;&#xff0c;String&a…

什么是事务?Mysql事务怎么用?Mybatis怎么操作事务的?Spring呢?快进来看看

目录 一、计算机中的事务 1. 概念 2.事务的ACID特性 3.事务类型 1)手动事务 2)自动事务 4.为什么需要事务? 5.优点 二、MySQL事务 1.语法格式: 2.关闭自动提交&#xff0c;开启新事务 3.开启自动提交&#xff0c;关闭事务控制 三、Mybatis事务 Mybatis开关事务控…