leetcode2975. 移除栅栏得到的正方形田地的最大面积

 题目

有一个大型的 (m - 1) x (n - 1) 矩形田地,其两个对角分别是 (1, 1) 和 (m, n) ,田地内部有一些水平栅栏和垂直栅栏,分别由数组 hFences 和 vFences 给出。

水平栅栏为坐标 (hFences[i], 1) 到 (hFences[i], n),垂直栅栏为坐标 (1, vFences[i]) 到 (m, vFences[i]) 。

返回通过 移除 一些栅栏(可能不移除)所能形成的最大面积的 正方形 田地的面积,或者如果无法形成正方形田地则返回 -1

由于答案可能很大,所以请返回结果对 109 + 7 取余 后的值。

注意:田地外围两个水平栅栏(坐标 (1, 1) 到 (1, n) 和坐标 (m, 1) 到 (m, n) )以及两个垂直栅栏(坐标 (1, 1) 到 (m, 1) 和坐标 (1, n) 到 (m, n) )所包围。这些栅栏 不能 被移除。

示例 1:

输入:m = 4, n = 3, hFences = [2,3], vFences = [2]
输出:4
解释:移除位于 2 的水平栅栏和位于 2 的垂直栅栏将得到一个面积为 4 的正方形田地。

示例 2:

输入:m = 6, n = 7, hFences = [2], vFences = [4]
输出:-1
解释:可以证明无法通过移除栅栏形成正方形田地。

提示:

  • 3 <= m, n <= 109
  • 1 <= hFences.length, vFences.length <= 600
  • 1 < hFences[i] < m
  • 1 < vFences[i] < n
  • hFences 和 vFences 中的元素是唯一的。

Problem: https://leetcode.cn/problems/maximum-squar100169 e-area-by-removing-fences-from-a-field/description/

[TOC]

思路

遍历所有的横向栏杆与纵向栏杆,算出横向栏杆之间的差和纵向栏杆之间的差并存储两个集合,最终的答案就是两个集合的交集的平方

复杂度

时间复杂度:

O(m^2+n^2)

空间复杂度:

O(m+n)

Code

class Solution:def maximizeSquareArea(self, m: int, n: int, hFences: List[int], vFences: List[int]) -> int:ans = -1hFences.append(m)hFences.insert(0,1)row = set()for i in range(len(hFences)):for j in range(0,i):row.add(abs( hFences[i] - hFences[j] ))vFences.append(n)vFences.insert(0,1)col = set()for i in range(len(vFences)):for j in range(0,i):col.add(abs(vFences[i] - vFences[j]))if abs(vFences[i] - vFences[j]) in row :ans = max(ans,pow(abs(vFences[i] - vFences[j]),2))for val in row:if val in col:ans = max(ans,pow(val,2))return ans % 1_000_000_007 if 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【VMware】Windows安装MySQL及网络配置---图文并茂详细介绍

目录 目录 一 安装MySQL ① 连接虚拟机传输MySQL压缩包 ②解压MySQL压缩包 ③ my文件拷贝mysql安装根目录下 ④ 修改my文件 ⑤ 5.7版本安装MySQL 5.1 注册mysql服务 5.2 初始化 5.3 启动MySQL 5.4 登入MySQL 5.5 修改默认密码 ⑥ 8版本安装MySQL 6.1 解压压缩包 …

透视屏幕有哪些优点

透视屏幕的优点有以下几个方面&#xff1a; 互动性强&#xff1a;透视屏幕可以实现人机互动&#xff0c;观众可以通过触摸屏幕或使用其他交互设备与屏幕进行互动&#xff0c;增强了观众的参与感和体验感。 多样化的展示方式&#xff1a;透视屏幕可以采用多种展示方式&#xff…

探究Chrome仿真模拟设备时Click区域不准确问题

一、开发环境 windows版本&#xff1a; windows 10 Chrome 版本&#xff1a; 116.0.5845.141 二、问题描述 在Chrome DevTools中开启仿真设备&#xff08;微信开发者工具也有类似问题&#xff09;&#xff0c;如果页面元素有绑定click时&#xff0c;实际点击事件响应区域会…

『番外篇九』SwiftUI 实战:打造一款“五脏俱全”的网络图片显示 App(上)

概览 俗话说得好:“读书破万卷,下笔如有神”。不过如果把这句话放到编程的学习上可就不那么贴切了。 要想熟练掌握一门编程语言,光看书是绝对不够的。我们还需尽可能的多撸码、早撸码,撸到无路可退、海枯石烂才有可能一窥门径。 在本篇和续篇博文中,我们将和小伙伴们一起…

DevC++ easyx实现视口编辑--像素绘图板与贴图系统

到了最终成果阶段了&#xff0c;虽然中间有一些代码讲起来没有意思&#xff0c;纯靠debug,1-1解决贴图网格不重合问题&#xff0c;这次是一个分支结束。 想着就是把瓦片贴进大地图里。 延续这几篇帖子&#xff0c;开发时间也从2023年的4月16到了6月2号&#xff0c;80小时基本…

设计模式之工厂设计模式【创造者模式】

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

我的128天之创作纪念日

目录 序 机缘 收获 日常 成就 憧憬 序 今天收到CSDN的一条消息推送&#xff0c;“初九之潜龙勿用 &#xff0c;不知不觉今天已经是你成为创作者的 第128天 啦。。。” 是啊&#xff0c;自今年8月24日开始写文章以来&#xff0c;时间过得好快&#xff0c;无论开心、痛苦…

【web】vue 播放后端(flask)发送的 mp3 文件

文章目录 演示后端&#xff08;flask&#xff09;前端&#xff08;vue3&#xff09;重要说明 演示 后端&#xff08;flask&#xff09; 后端返回的是 mp3 文件的 url&#xff0c;是可以直接在浏览器上打开后播放的处理跨域请求pip install flask-cors后端代码from flask impor…

【Java】云HIS源码 提供“一个中心多个医院”平台

云HIS可实现“云部署”&#xff0c;即可实现在云计算下的多种部署模式。系统采用SaaS服务模式的新驱动&#xff0c;功能设计充分合理&#xff0c;界面布局合理美观&#xff0c;每个用户可具有个性化工作台。 通过提供“一个中心多个医院”平台&#xff0c;为集团连锁化的医院和…

OpenCV图像处理——C++实现亚像素尺寸标定板边缘轮廓提取

前言 标定模板&#xff08;Calibration Target&#xff09;在机器视觉、图像测量、摄影测量以及三维重建等应用中起着重要的作用。它被用于校正相机的畸变&#xff0c;确定物理尺寸和像素之间的换算关系&#xff0c;并建立相机成像的几何模型。通过使用相机拍摄带有固定间距图…

Android Menu菜单的设定

菜单主要分为三类&#xff0c;选项菜单(Option Menu)、上下文菜单(Context Menu)和子菜单(Sub Menu)。 1.选项菜单Option Menu 当用户单击软件上的菜单按钮&#xff0c;触发事件弹出的菜单框就是选项菜单。如图&#xff1a; 布局为在res文件夹下新建一个menu文件夹&#xff0…

规范书写 26 个英语字母

规范书写 26 个英语字母 1. 四线三格2. 字母的笔顺3. 英语字母的印刷体与手写体References 1. 四线三格 中文使用米字格或田字格规范汉字的格式&#xff0c;而英语则是以四线三格来规范字符的格式。 (1) 字母应稍向右倾斜&#xff0c;约为 5 ∘ 5^{\circ} 5∘&#xff0c;斜…