在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积。
每个矩形由其左下顶点和右上顶点坐标表示,如图所示。
示例:
输入: -3, 0, 3, 4, 0, -1, 9, 2
输出: 45
说明: 假设矩形面积不会超出 int 的范围。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/rectangle-area
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路:
思路比较简单,
先判断一下存不存在重叠的部分,
判断的依据是: 如果【A, C】和【E, G】存在交集 并且 【B, D】和【F, H】存在交集,则说明存在重叠面积,
再分别计算出两个矩形各自的面积, 加在一起最后减去重叠部分的面积就是总面积了。
class Solution(object):
def computeArea(self, A, B, C, D, E, F, G, H):
"""
:type A: int
:type B: int
:type C: int
:type D: int
:type E: int
:type F: int
:type G: int
:type H: int
:rtype: int
"""
# [A, C]和[E, G]取交集, [B, D]和[F, H]取交集
if min(C, G) - max(A, E) < 0 or min(D, H) - max(B, F) < 0:
S_overlap = 0
else:
S_overlap = (min(C, G) - max(A, E)) * (min(D, H) - max(B, F))
S_first_square = (D - B) * (C - A)
S_second_square = (H - F) * (G - E)
# print S_second_square, S_first_square, S_overlap
return S_second_square + S_first_square - S_overlap