LeetCode 1139. 最大的以 1 为边界的正方形

news2024/9/22 13:26:35

原题链接

难度: m i d d l e \color{orange}{middle} middle

2023/2/17 每日一题


题目描述

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

示例 1:

输入:grid = [[1,1,1],[1,0,1],[1,1,1]]
输出:9
复制示例输入

示例 2:

输入:grid = [[1,1,0,0]]
输出:1
复制示例输入

提示:

  • 1 < = g r i d . l e n g t h < = 100 1 <= grid.length <= 100 1<=grid.length<=100
  • 1 < = g r i d [ 0 ] . l e n g t h < = 100 1 <= grid[0].length <= 100 1<=grid[0].length<=100
  • g r i d [ i ] [ j ] grid[i][j] grid[i][j] 0 0 0 1 1 1

算法

(模拟、前缀和) O ( n 3 ) O(n^3) O(n3)

1.我们枚举每一个子正方形:三重循环,第一重循环枚举正方形的长度 len,第二三重循环枚举左上角的顶点。
2. 我们通过前缀和来计算每个正方形的周长。
3. 我们用最外面的正方形 - 里面的正方形,可以得到最外面一圈的正方形的周长,判断是不是等于 4 * (len - 1),如果相等,返回正方形的面积,否则返回 0。


求出红色框和黄色框中间的一圈的前缀和就是正方形的周长。
在这里插入图片描述


用前缀和的差可以直接计算:
在这里插入图片描述

C++ 代码

class Solution {
public:
    vector<vector<int>> s;

    int get(int x1, int y1, int x2, int y2) {
        return s[x2][y2] - s[x1 - 1][y2] - s[x2][y1 - 1] + s[x1 - 1][y1 - 1];
    }
    int largest1BorderedSquare(vector<vector<int>>& grid) {
        int n = grid.size(), m = grid[0].size();
        s = vector<vector<int>>(n + 1, vector<int>(m + 1, 0));

        for (int i = 1; i <= n; i ++)
            for (int j = 1; j <= m; j ++)
                s[i][j] = s[i - 1][j] + s[i][j - 1] - s[i - 1][j - 1] + grid[i - 1][j - 1];

        for (int len = min(m, n); len > 1; len --){
            for (int i = 1; i + len - 1 <= n; i ++) {
                for (int j = 1; j + len - 1 <= m; j ++) {
                    int a = i, b = j, c = i + len - 1, d = j + len - 1;
                    if (get(a, b, c, d) - get(a + 1, b + 1, c - 1, d - 1) == 4 * (len - 1))
                        return len * len;
                }
            }
        }

        if (s[n][m] > 0) return 1;
        
        return 0;
    }
};

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

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

相关文章

Transformer论文阅读:ViT算法笔记

标题&#xff1a;An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale 会议&#xff1a;ICLR2021 论文地址&#xff1a;https://openreview.net/forum?idYicbFdNTTy 文章目录Abstract1 Introduction2 Related Work3 Method3.1 Vision Transformer3.2…

【已解决】关于 luckysheet 设置纯文本,解决日期格式回显错误的办法

目录 一、现象 二、分析 三、思考过程 五、解决 六、参考链接 一、现象 在excel里面输入内容&#xff0c;如 2023-2-17 12:00 保存后&#xff0c;传回后端的数据被转化成了 数值类型&#xff0c;这显然是一种困扰。 如图所示 二、分析 查阅了文档和一些博客发现 Lucky…

2023美赛ICM F题 详细思路

对于本次美赛F题来说&#xff0c;核心之处就是综合评价模型&#xff0c;但考察我们这个模型的角度较以往常规的制定指标&#xff0c;计算得分给出排名然后分析结果这一套常规流程不同&#xff0c;这次美赛F题出题更贴合实际&#xff0c;整体聚焦在“制定完一个新指标后会带来的…

2019蓝桥杯真题数列求值(填空题) C语言/C++

题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 给定数列 1,1,1,3,5,9,17,⋯&#xff0c;从第 4 项开始&#xff0c;每项都是前 3 项的和。 求第 20190324 项的最后 4 位数字。 运行限制 最大运行时间&#xff1a…

三分钟学会用Vim

Vim知识点 目录Vim知识点一&#xff1a;什么是vim二&#xff1a;vim常用的三种模式三&#xff1a;vim的基本操作一&#xff1a;什么是vim vim最小集 vim是一款多模式的编辑器—各种模式—每种模式的用法有差别—每种模式之间可以互相切换 但是我们最常用的就是3~5个模式 vi…

更换ssl证书

更换ssl证书常用证书查看以及转换网址阿里云判断流量以及配置证书判断接入点阿里云控制台配置证书WAFAzure判断流量以及配置证书&#xff1a;判断接入点Azure配置证书CDNAPP GateWay常用证书查看以及转换网址 https://www.chinassl.net/ssltools/convert-ssl.htmlhttps://myss…

【java 高并发编程之JUC】高阶JUC特性总结

1 线程中断机制 1.1 什么是中断&#xff1f; 首先 一个线程不应该由其他线程来强制中断或停止&#xff0c;而是应该由线程自己自行停止。所以&#xff0c;Thread.stop, Thread.suspend, Thread.resume 都已经被废弃了。 其次 在Java中没有办法立即停止一条线程&#xff0c;然…

TCP简单说明

前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;随着人工智能的不断发展&#xff0c;机器学习这门技术也越来越重要&#xff0c;很多人都开启了学习机器学习&#xff0c;本文就介绍了机器学习的基础内容。 提示&#xff1a;以下是本篇文…

基于深度学习的个性化推荐系统实时化改造与升级

省时查报告-专业、及时、全面的行研报告库省时查方案-专业、及时、全面的营销策划方案库【免费下载】2023年1月份热门报告合集ChatGPT的发展历程、原理、技术架构及未来方向《ChatGPT&#xff1a;真格基金分享.pdf》2023年AIGC发展趋势报告&#xff1a;人工智能的下一时代2023年…

ChatGPT初体验step by step:ChatGPT解决人类提出的数理逻辑问题,Python编程实践

ChatGPT初体验step by step&#xff1a;ChatGPT解决人类提出的数理逻辑问题&#xff0c;Python编程实践 如果已有有效的open ai的api key&#xff0c;则跳过本文&#xff08;1&#xff09;&#xff08;2&#xff09;&#xff08;3&#xff09;&#xff08;4&#xff09;&#x…

蓝牙 - 如何实现安全性

蓝牙技术在加密上做了很多工作&#xff0c;来保证你的数据安全。 这些年来&#xff0c;我们的许多电子设备都转向了使用无线技术进行连接。我们的鼠标、键盘、耳机和扬声器上不再有长长的纠缠的电线&#xff0c;而使用了简单方便的无线技术&#xff0c;科技进步改善了我们的生活…

亿级高并发电商项目-- 实战篇 --万达商城项目 十(安装与配置Elasticsearch和kibana、编写搜索功能、向ES同步数据库商品数据)

亿级高并发电商项目-- 实战篇 --万达商城项目搭建 一 &#xff08;商家端与用户端功能介绍、项目技术架构、数据库表结构等设计&#xff09; 亿级高并发电商项目-- 实战篇 --万达商城项目搭建 一 &#xff08;商家端与用户端功能介绍、项目技术架构、数据库表结构等设计&#x…

2023美国大学生数学建模竞赛(美赛)思路代码

2023美国大学生数学建模竞赛&#xff08;美赛&#xff09;思路&代码报名时间节点比赛说明问题A&#xff08;数据分析题&#xff09;&#xff1a;收干旱影响的植物群落&#xff08;MCM&#xff09;第一问第二问问题B&#xff08;仿真建模题&#xff09;&#xff1a;重塑马赛…

MySQL面试精选-架构

1、说说MySQL 分层有哪些 从前面MySQL的架构图,我们可以看出MySQL的架构自顶向下大致可以分为网络连接层、数据库服务层、存储引擎层和系统文件层四大部分。那最主要的两层为Server 层和存储引擎层。 2、Server 层包含哪些模块 Server主要包括连接器、查询缓存、分析器、优…

第48讲:SQL优化之ORDER BY排序查询的优化

文章目录1.ORDEY BY排序查询优化方面的概念2.ORDER BY排序的优化原则3.ORDER BY排序优化的案例3.1.准备排序优化的表以及索引3.2.同时对nl和lxfs字段使用升序排序3.3.同时对nl和lxfs字段使用降序排序3.4.排序时调整联合索引中字段的位置顺序3.5.排序时一个字段使用升序一个字段…

ChatGPT 的出现意味着什么?

老于笔记02.16选中一天的美好&#xff0c;删除不满的忧虑。前言ChatGPT 的出现是自然语言处理技术的一个重要里程碑。它是 OpenAI 推出的一个基于 Transformer 模型的大型语言模型&#xff0c;被训练于大量的文本数据&#xff0c;以使其能够生成人类般的文本响应。ChatGPT 的出…

2023.2.6-2.12 AI行业周刊(第136期):住院

周末把父亲送到医院&#xff0c;安顿下来&#xff0c;这周还是决定做膝关节的手术了。 一辈子长期的劳累&#xff0c;加上前两年搬家时的辛苦&#xff0c;最终导致膝关节受损严重。 这两年来&#xff0c;走路每一步都很疼&#xff0c;纠结了很久&#xff0c;去了上海&#xf…

VS实用调试技巧

一.什么是BUG&#x1f41b;Bug一词的原意是虫子&#xff0c;而在电脑系统或程序中隐藏着的一些未被发现的缺陷或问题&#xff0c;人们也叫它"bug"。这是为什么呢&#xff1f;这就要追溯到一个程序员与飞蛾的故事了。Bug的创始人格蕾丝赫柏&#xff08;Grace Murray H…

sql复习(视图、Top-N分析、其他数据库对象)

一、视图view 1.视图定义 视图是一种虚表。 视图建立在已有表的基础上, 视图赖以建立的这些表称为基表。 向视图提供数据内容的语句为 SELECT 语句, 可以将视图理解为存储起来的 SELECT 语句。 视图向用户提供基表数据的另一种表现形式。 2.使用视图的好处 控制数据访问 简…

【离线数仓-1-数仓前期建设准备工作】

离线数仓-1-数仓前期建设准备工作离线数仓-1-数仓前期建设准备工作1.数仓概念1. 数据仓库概念2. 数据分类3.数据仓库总视图4.数据仓库项目需求分析5.数仓搭建技术基础分析1.项目技术如何选型&#xff1a;2.框架版本如何选型&#xff1b;3.服务器使用物理机还是云主机&#xff1…