🚀 本题 LeetCode 传送门

    题目大意

    在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积。每个矩形由其左下顶点和右上顶点坐标表示,如图所示。说明: 假设矩形面积不会超出 int 的范围。

    解题思路

    • 给出两个矩形的坐标,求这两个矩形在坐标轴上覆盖的总面积。
    • 几何题,由于只有 2 个矩形,所以按照题意做即可。先分别求两个矩形的面积,加起来再减去两个矩形重叠的面积。

    代码

    1. package leetcode
    2. func computeArea(A int, B int, C int, D int, E int, F int, G int, H int) int {
    3. X0, Y0, X1, Y1 := max(A, E), max(B, F), min(C, G), min(D, H)
    4. return area(A, B, C, D) + area(E, F, G, H) - area(X0, Y0, X1, Y1)
    5. }
    6. func area(x0, y0, x1, y1 int) int {
    7. l, h := x1-x0, y1-y0
    8. if l <= 0 || h <= 0 {
    9. return 0
    10. }
    11. return l * h
    12. }