跳至主要內容

0223. 矩形面积

ITCharge小于 1 分钟

0223. 矩形面积open in new window

  • 标签:几何、数学
  • 难度:中等

题目链接

题目大意

给定两个矩形的左下角坐标、右上角坐标 (ax1, ay1, ax2, ay2, bx1, by1, bx2, by2)。其中 (ax1, ay1) 表示第一个矩形左下角坐标,(ax2, ay2) 表示第一个矩形右上角坐标,(bx1, by1) 表示第二个矩形左下角坐标,(bx2, by2) 表示第二个矩形右上角坐标。

要求:计算出两个矩形覆盖的总面积。

解题思路

两个矩形覆盖的总面积 = 第一个矩形面积 + 第二个矩形面积 - 重叠部分面积。

需要分别计算出两个矩形面积,还有求出相交部分的长、宽,并计算出对应重叠部分的面积。

代码

class Solution:
    def computeArea(self, ax1: int, ay1: int, ax2: int, ay2: int, bx1: int, by1: int, bx2: int, by2: int) -> int:
        area_a = (ax2 - ax1) * (ay2 - ay1)
        area_b = (bx2 - bx1) * (by2 - by1)
        overlap_width = max(0, min(ax2, bx2) - max(ax1, bx1))
        overlap_height = max(0, min(ay2, by2) - max(ay1, by1))
        area_overlap = overlap_width * overlap_height

        return area_a + area_b - area_overlap