LeetCode 391. 完美矩形(set检查顶点+面积检查)

1. 题目

我们有 N 个与坐标轴对齐的矩形, 其中 N > 0, 判断它们是否能精确地覆盖一个矩形区域。

每个矩形用左下角的点和右上角的点的坐标来表示。例如, 一个单位正方形可以表示为 [1,1,2,2]。 ( 左下角的点的坐标为 (1, 1) 以及右上角的点的坐标为 (2, 2) )。

在这里插入图片描述

示例 1:
rectangles = [[1,1,3,3],[3,1,4,2],[3,2,4,4],[1,3,2,4],[2,3,3,4]
]
返回 true5个矩形一起可以精确地覆盖一个矩形区域。

在这里插入图片描述

示例 2:
rectangles = [[1,1,2,3],[1,3,2,4],[3,1,4,2],[3,2,4,4]
]
返回 false。两个矩形之间有间隔,无法覆盖成一个矩形。

在这里插入图片描述

示例 3:
rectangles = [[1,1,3,3],[3,1,4,2],[1,3,2,4],[3,2,4,4]
]
返回 false。图形顶端留有间隔,无法覆盖成一个矩形。

在这里插入图片描述

示例 4:
rectangles = [[1,1,3,3],[3,1,4,2],[1,3,2,4],[2,2,4,4]
]
返回 false。因为中间有相交区域,虽然形成了矩形,但不是精确覆盖。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/perfect-rectangle
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • set 查找四个顶点,在set中,说明重叠删除,不在set中,加入set
  • 同时记录所有小矩形 面积之和 s,还有x,y的最大最小范围
  • 最后set中的顶点只能是四个角,且面积 s = (x_max - x_min)*(y_max - y_min)
class Solution {
public:bool isRectangleCover(vector<vector<int>>& ret) {set<pair<int,int>> s;int x1 = INT_MAX, y1 = INT_MAX, x2 = INT_MIN, y2 = INT_MIN, area = 0;for(int i = 0; i < ret.size(); ++i){x1 = min(ret[i][0],x1);x2 = max(ret[i][2],x2);y1 = min(ret[i][1],y1);y2 = max(ret[i][3],y2);area += (ret[i][2]-ret[i][0])*(ret[i][3]-ret[i][1]);if(s.find({ret[i][0],ret[i][1]})==s.end())s.insert({ret[i][0],ret[i][1]});elses.erase({ret[i][0],ret[i][1]});if(s.find({ret[i][2],ret[i][3]})==s.end())s.insert({ret[i][2],ret[i][3]});elses.erase({ret[i][2],ret[i][3]});if(s.find({ret[i][0],ret[i][3]})==s.end())s.insert({ret[i][0],ret[i][3]});elses.erase({ret[i][0],ret[i][3]});if(s.find({ret[i][2],ret[i][1]})==s.end())s.insert({ret[i][2],ret[i][1]});elses.erase({ret[i][2],ret[i][1]});}if(s.size() !=4 || !s.count({x1,y1}) || !s.count({x1,y2}) || !s.count({x2,y1}) || !s.count({x2,y2}))return false;return area == (x2-x1)*(y2-y1);}
};

304 ms 26 MB

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

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

相关文章

时间序列 - 案例按步骤详解 -(SPSS建模)

时间序列简单的说就是各时间点上形成的数值序列&#xff0c;通过观察历史数据的变化规律预测未来的值。在这里需要强调一点的是&#xff0c;时间序列分析并不是关于时间的回归&#xff0c;它主要是研究自身的变化规律的。 准备工作&#xff1a;SPSS - 中文版 SPSS 22.0 软件下…

特征计算 - 遍历求值提速 6 万倍 lambda...if...else(if...else...) +map() 对比 iterrows() - Python代码

Python 进行 DataFrame 数据处理的过程中&#xff0c;需要判断某一列中的值&#xff08;条件&#xff09;&#xff0c;然后对其他两列或三列进行求和&#xff08;均值/最值&#xff09;等运算&#xff0c;并把运算结果存储在新的一列中。干说可能觉得比较晕&#xff0c;我们来看…

非线性回归 - 案例按步骤详解 -(SPSS建模)

在上一篇时间序列的文章中&#xff0c;偶然发现另一份数据的整体趋势很符合非线性回归关系&#xff0c;那么就顺势写一篇非线性回归案例的文章吧。 准备工作&#xff1a;SPSS - 中文版 SPSS 22.0 软件下载与安装教程 - 【附产品授权许可码&#xff0c;永久免费】 数据解释&am…

邮件服务器之POP3协议分析

第1章. POP3概述 POP3全称为Post Office Protocol version3&#xff0c;即邮局协议第3版。它被用户代理用来邮件服务器取得邮件。POP3采用的也是C/S通信 模型&#xff0c;对应的RFC文 档为RFC1939。 该协议非常简单&#xff0c;所以我们只重点介绍其通信过程&#xff0c;而相关…

Python 画图常用颜色 - 单色、渐变色、混色 - 够用

单色 装了seaborn扩展的话&#xff0c;在字典seaborn.xkcd_rgb中包含所有的xkcd crowdsourced color names。如下&#xff1a; plt.plot([1,2], lw4, cseaborn.xkcd_rgb[baby poop green]) 虽然觉得上面的已经够用了&#xff0c;但是还是备份一下这个最全的吧。 渐变色&…

[scikit-learn 机器学习] 2. 简单线性回归

文章目录1. 简单线性回归2. 评价模型本文为 scikit-learn机器学习&#xff08;第2版&#xff09;学习笔记1. 简单线性回归 import numpy as np import matplotlib.pyplot as pltX np.array([[6],[8],[10],[14],[18]]) y np.array([7,9,13,17.5,18]) plt.title("pizza …

Matplotlib - 散点图 scatter() 所有用法详解

目录 基本用法 散点的大小不同&#xff08;根据点对应的数值&#xff09; 散点的颜色不同&#xff08;指定颜色或者渐变色&#xff09; 散点图和折线图是数据分析中最常用的两种图形&#xff0c;他们能够分析不同数值型特征间的关系。其中&#xff0c;散点图主要用于分析特征…

Matplotlib - 折线图 plot() 所有用法详解

散点图和折线图是数据分析中最常用的两种图形。其中&#xff0c;折线图用于分析自变量和因变量之间的趋势关系&#xff0c;最适合用于显示随着时间而变化的连续数据&#xff0c;同时还可以看出数量的差异&#xff0c;增长情况。 Matplotlib 中绘制散点图的函数为 plot() &…

html 拍照旋转了90度_华为Mate X2概念图:可旋转正反三屏幕,单颗镜头在转轴上...

如果你是新朋友&#xff0c;请点击上方的蓝色字 关注 “高科技爱好者”&#xff0c;保证不会让你失望的.华为折叠手机的上市发售&#xff0c;引起了消费者的广泛关注&#xff0c;尤其是华为MateX系列手机的售价非常昂贵&#xff0c;同时出货量也比较少&#xff0c;所以外界都十…

[scikit-learn 机器学习] 3. K-近邻算法分类和回归

文章目录1. KNN模型2. KNN分类3. 使用sklearn KNN分类4. KNN回归本文为 scikit-learn机器学习&#xff08;第2版&#xff09;学习笔记K 近邻法&#xff08;K-Nearest Neighbor, K-NN&#xff09; 常用于 搜索和推荐系统。 1. KNN模型 确定距离度量方法&#xff08;如欧氏距离…

Matplotlib - 柱状图、直方图、条形图 bar() barh() 所有用法详解

目录 基本用法 多个直方图并列显示 显示直方图上的数值 多个直方图堆叠显示 水平直方图 相较散点图和折线图&#xff0c;柱状图&#xff08;直方图、条形图&#xff09;、饼图、箱线图是另外 3 种数据分析常用的图形&#xff0c;主要用于分析数据内部的分布状态或分散状…

word里双横线怎么打_美人计 | 精致打工人秀智,教你内双怎么化

通勤妆千千万&#xff0c;大家画好才能算。国民初恋裴秀智搭档“南朋友”南柱赫&#xff0c;《启动了》这部剧让很多颜值控都纷纷沦陷了。起初奔着这两大主角看的&#xff0c;结果看着看着又被男二金宣虎圈了粉&#xff0c;在剧中裴秀智和金宣虎两小无猜的感情没能发展成爱情&a…

Matplotlib - 饼图、环形图 pie() 多重饼图 subplots() 所有用法详解

目录 基本用法 饼图中突出显示某部分 环形图&#xff08;空心饼图&#xff09; 多重饼图&#xff0c;并添加分割线 相较散点图和折线图&#xff0c;柱状图、饼图、箱线图是另外 3 种数据分析常用的图形&#xff0c;主要用于分析数据内部的分布状态或分散状态。饼图主要用于…

USACO2.11 The Castle hdu1198

题意&#xff1a; 我们憨厚的USACO主人公农夫约翰(Farmer John)以无法想象的运气,在他生日那天收到了一份特别的礼物&#xff1a;一张“幸运爱尔兰”&#xff08;一种彩票&#xff09;。结果这张彩票让他获得了这次比赛唯一的奖品——坐落于爱尔兰郊外的一座梦幻般的城堡&#…

Matplotlib - 箱线图、箱型图 boxplot () 所有用法详解

目录 基本用法 水平箱线图&#xff0c;显示均值 改变箱线图的形状&#xff08;箱体的形状notch、异常值的形状sym&#xff09; 改变箱线图的颜色&#xff08;箱体边框的颜色、箱体填充色&#xff09; 相较散点图和折线图&#xff0c;柱状图、饼图、箱线图&#xff08;箱…

【转载】三极管,场效应管 工作原理小结

三极管属于流控器件&#xff0c;即Ib控制放大Ic&#xff0c; 场效应管属于压控器件&#xff0c;即Ugs控制Id。 二者都有三个工作区域&#xff0c;即截止区&#xff0c;恒流区和可变电阻区。 Ib小于开启电流时&#xff0c;Ic不受控&#xff0c;Rce很大&#xff0c;Ic很小&#x…

educoderpython答案顺序结构程序设计_答案汇总:土木机械类+计算机类

土木机械类(点击图片查看答案)理论力学1哈工大第7版机械设计濮良贵第9版机械原理西工大第8版材料力学1刘鸿文第5版结构力学1龙驭球第4版结构力学朱慈勉第2版工程力学范钦珊第2版材料力学2孙训方第5版理论力学教程水小平机械工程控制基础杨叔子第6版自动控制原理胡寿松第6版土力…

Pyecharts - 动态地图 geo()/ map() - 安装与用法详解

目录 安装Pyecharts 安装对应的地图拓展&#xff1a; 准备数据 使用 pyecharts 模块中的 Geo 函数&#xff1a; 使用 pyecharts 模块中的 map 函数&#xff1a; 把一些地域性比较明显的数据显示在一张地图上&#xff0c;远比给别人一个 Excel 文件好得多。 Matplotlib 中…

[编程启蒙游戏] 1. 猜数字

文章目录1. 游戏前提2. 游戏目的3. python代码4. 玩一玩1. 游戏前提 儿童能认识数字能比较数字大小 2. 游戏目的 培养孩子的二分查找思维 3. python代码 # python 3.7 环境 while True:n int(input("请输入一个数来猜&#xff1a;\n"))count 1print((\n*15))g…

生命银行怎么样_银行双职工家庭现状实录

和大多数银行女一样&#xff0c;我和老公也是同在银行上班相识&#xff0c;14年结婚&#xff0c;15年9月&#xff0c;大儿子出生&#xff0c;然后婆婆跟妈妈轮流照顾小孩&#xff0c;18年1月&#xff0c;小儿子出生&#xff0c;从此便开始了歇斯里底&#xff0c;腥风血雨的生活…