[LeetCode] 矩形面积
题目链接: https://leetcode-cn.com/problems/rectangle-area
难度:中等
通过率:41.3%
题目描述:
在 二维 平面上计算出两个 由直线构成的 矩形重叠后形成的总面积。
每个矩形由其左下顶点和右上顶点坐标表示,如图所示。

示例:
输入: -3, 0, 3, 4, 0, -1, 9, 2
输出: 45
说明: 假设矩形面积不会超出 int 的范围。
思路:
这道题,把问题考虑清楚就不难了!
首先,我们调整两个矩形,让第一个矩形是靠最左边的;
其次,先考虑没有重叠的情况,有三种情况,如图所示:

- rectangle1的下边都大于(等于)rectangle2的上边,即 B >= H
- rectangle1的右边都小于(等于)rectangle2的左边,即 C >= E
- rectangle1的上边都小于(等于)rectangle2的下边,即 B >= H
最后, 要考虑重叠的情况,这种其实很好考虑,因为一定有重叠,所以可以找到上下左右边界
上边界,取两个矩形的上边界的最小值
下边界,取两个矩形的下边界的最大值
左边界,取两个矩形的左边界的最大值
右边界,取两个矩形的右边界的最小值
得到重叠面积,只需要两个矩形相加减去重叠面积即可!
有疑惑的地方,要留言哦~
代码:
class Solution:
def computeArea(self, A: int, B: int, C: int, D: int, E: int, F: int, G: int, H: int) -> int:
# 调整两个矩形位置, 让第一个矩形靠最左边
if A > E:
return self.computeArea(E, F, G, H, A, B, C, D)
# 没有重叠的情况
if B >= H or D <= F or C <= E:
return abs(A - C) * abs(B - D) + abs(E - G) * abs(F - H)
# 重叠情况
# xia
down = max(A, E)
# shang
up = min(C, G)
# zuo
left = max(B, F)
# you
right = min(D, H)
return abs(A - C) * abs(B - D) + abs(E - G) * abs(F - H) - abs(up - down) * abs(left - right)
[LeetCode] 矩形面积的更多相关文章
- [LeetCode] Rectangle Area 矩形面积
Find the total area covered by two rectilinear rectangles in a2D plane. Each rectangle is defined by ...
- [LeetCode] 850. Rectangle Area II 矩形面积之二
We are given a list of (axis-aligned) rectangles. Each rectangle[i] = [x1, y1, x2, y2] , where (x1, ...
- [LeetCode] 223. Rectangle Area 矩形面积
Find the total area covered by two rectilinearrectangles in a 2D plane. Each rectangle is defined by ...
- LeetCode 223. 矩形面积(Rectangle Area)
223. 矩形面积 223. Rectangle Area 题目描述 在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积. 每个矩形由其左下顶点和右上顶点坐标表示,如图所示. LeetCode2 ...
- [LeetCode] 223.矩形面积
题目链接: https://leetcode-cn.com/problems/rectangle-area 难度:中等 通过率:41.3% 题目描述: 在 二维 平面上计算出两个 由直线构成的 矩形重 ...
- Java实现 LeetCode 223 矩形面积
223. 矩形面积 在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积. 每个矩形由其左下顶点和右上顶点坐标表示,如图所示. Rectangle Area 示例: 输入: -3, 0, 3, 4 ...
- [LeetCode]223. Rectangle Area矩形面积
/* 像是一道数据分析题 思路就是两个矩形面积之和减去叠加面积之和 */ public int computeArea(int A, int B, int C, int D, int E, int F ...
- [Swift]LeetCode223. 矩形面积 | Rectangle Area
Find the total area covered by two rectilinear rectangles in a 2D plane. Each rectangle is defined b ...
- POJ 1151 Atlantis(线段树-扫描线,矩形面积并)
题目链接:http://poj.org/problem?id=1151 题目大意:坐标轴上给你n个矩形, 问这n个矩形覆盖的面积 题目思路:矩形面积并. 代码如下: #include<stdio ...
随机推荐
- Springboot 默认静态路径
springboot 默认静态路径 代码如下所示 类ResourceProperties.class private static final String[] CLASSPATH_RESOURCE_ ...
- HDU4587--TWO NODES(无向图割点,暴力出奇迹)这是我见过的时间最长的题。。。
TWO NODES Time Limit: 24000/12000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total ...
- Vue页面刷新方法(子组件改变数据后兄弟组件刷新,不闪烁)
todo https://blog.csdn.net/qq_40571631/article/details/91533248
- 20175215 2018-2019-2 第四周Java课程学习总结
第五章学习内容 1.子类的继承性 (1)子类和父类在同一包中的继承性 如果子类和父类在同一个包中,那么,子类自然地继承了其父类中不是private的成员变量作为自己的成员变量,并且也自然地继承了父类中 ...
- php面向对象 练习
实例一:求一个圆环的面积,大圆半径:10 小圆半径:5 造一个圆的类: class Yuan { public $r; function __construct($r) //半径初始化 { $t ...
- php面向对象 2
继承概念:如果一个类有子类,那么该子类会继承父类的一切东西(私有成员访问不到)在定义子类的时候需要加一个关键字:extends特点:单继承,一个类只能有一个父类如果父类中有构造函数,子类在实例化的时候 ...
- UVA 1025 -- A Spy in the Metro (DP)
UVA 1025 -- A Spy in the Metro 题意: 一个间谍要从第一个车站到第n个车站去会见另一个,在是期间有n个车站,有来回的车站,让你在时间T内时到达n,并且等车时间最短, ...
- flutter 隐藏返回按钮 自定义返回按钮
自定义返回按钮 //改变颜色 Widget build(BuildContext context) { return Scaffold( appBar: AppBar( leading: BackBu ...
- 阶段3 2.Spring_10.Spring中事务控制_11 spring5新特性的介绍
jdk1.7和1.8的差别 准备好的一个maven工程 反射创建对象10亿次 ,用的时间 替换jdk的版本 选择为1.7 切换了1.7的版本以后呢执行的速度就变的非常的慢 两个版本的对比 响应式编程风 ...
- 二十二:视图之add_url_rule和app.route
flask注册视图有两种方式 一:add_url_rule()add_url_rule源码:rule:接口地址view_func=视图函数endpoint=终结点,可以理解为给当前视图取的别名,最直观 ...