当前位置: 首页 > news >正文

【力扣-LeetCode】1139. 最大的以 1 为边界的正方形 C++题解

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

难度中等137收藏分享切换为英文接收动态反馈

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

示例 1:

输入:grid = [[1,1,1],[1,0,1],[1,1,1]]

输出:9

示例 2:

输入:grid = [[1,1,0,0]]

输出:1

提示:

  • 1 <= grid.length <= 100

  • 1 <= grid[0].length <= 100

  • grid[i][j] 为 0 或 1

解题思路:以正方形周长的路径扫描每个子网格;

以当前坐标(i,j)为起点,L为边长,扫描一个正方形的周长,判断是否构成一个正方形,并不断更新maxL(当前的最大边长);

最后返回maxL*maxL即可。

AC代码:

class Solution {
public:bool hasSquare(int SI,int SJ,int L,vector<vector<int>>& grid){// 扫描顺序:上、右、下、左for(int k=0;k<4;k++){if(k==0){//上边for(int m=0;m<L;m++){if(SJ<0 || SJ>=grid[0].size())return false;if(grid[SI][SJ]!=1)return false;if(m<L-1)SJ++;}}if(k==1){//右边for(int m=0;m<L;m++){if(SI<0 || SI>=grid.size())return false;if(grid[SI][SJ]!=1)return false;if(m<L-1)SI++;}}if(k==2){//下边for(int m=0;m<L;m++){if(SJ<0 || SJ>=grid[0].size())return false;if(grid[SI][SJ]!=1)return false;if(m<L-1)SJ--;}}if(k==3){//左边for(int m=0;m<L;m++){if(SI<0 || SI>=grid.size())return false;if(grid[SI][SJ]!=1)return false;if(m<L-1)SI--;}} }return true;}int largest1BorderedSquare(vector<vector<int>>& grid) {if(grid.size()==1){for(int i=0;i<grid[0].size();i++){if(grid[0][i]==1)return 1;}return 0;}//解题思路:以正方形周长的路径扫描每个子网格int maxL=0;int row=grid.size();    //行数int col=grid[0].size(); //列数for(int i=0;i<row;i++){for(int j=0;j<col;j++){if(grid[i][j]!=1)continue;int L=max(maxL,1);//以当前坐标(i,j)为起点,L为边长,扫描一个正方形的周长//判断是否构成一个正方形int LLen=min(row-i,col-j);bool isOk=false;for(;L<=LLen;L++){isOk=hasSquare(i,j,L,grid);if(isOk)maxL=max(L,maxL);} }}return maxL*maxL;}
};

http://www.lryc.cn/news/10297.html

相关文章:

  • 【JavaGuide面试总结】Redis篇·下
  • ForkJoinPool原理
  • 02 python基本语法和数据类型
  • 【办公类-16-09】“2022下学期 大班运动场地分配表-跳过节日循环排序”(python 排班表系列)
  • 全网多种方法分析解决HTTP Status 404资源未找到的错误,TCP的3次握手,dns域名解析,发起http请求以及cookie和session的区别
  • Django图书商场购物系统python毕业设计项目推荐
  • 基于模型预测控制(MPC)的悬架系统仿真分析
  • Word处理控件Aspose.Words功能演示:使用 Java 拆分 MS Word 文档
  • 图扑数字孪生智慧机场,助推民航“四型机场“建设
  • 内网安装管家婆软件如何实现外网访问?内网穿透的几种方案教程
  • CCNP350-401学习笔记(1-50题)
  • 基于微信小程序的新冠肺炎服务预约小程序
  • 网站项目部署在k8s案例与Jenkins自动化发布项目(CI/CD)
  • 网络原理 (1)
  • LeetCode-1139. 最大的以 1 为边界的正方形【前缀和,矩阵】
  • windows10/11,傻瓜式安装pytorch(gpu),在虚拟环境anaconda
  • Revit导出PDF格式图纸流程及“批量导出图纸”
  • 【自学Linux】 Linux文件目录结构
  • 如何让APP在Google Play中成为特色
  • 【C++】cin的处理过程
  • 读取Sentinel和Landsat 压缩包数据,直接进行波段重组、影像裁剪或者匀色镶嵌处理
  • Yakit Web Fuzzer 终极能力强化:热加载 Fuzz
  • Qt新手入门指南 - 如何创建模型/视图(三)
  • 【Spring】手动实现简易AOP和IOC
  • EasyExcel的使用
  • 基础篇(-1)-java特点、JDK、JRE、JVM区别、字节码编译、跨平台、程序运行
  • 【网络编程】Java快速上手InetAddress类
  • 小小bat-day1-自动文件上传
  • 2023年美赛D题公布
  • Gartner 再度预测2023低代码趋势,真的会赚钱吗?