LeetCode: 223. 矩形面积 [Java实现]

在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积。

每个矩形由其左下顶点和右上顶点坐标表示,如图所示。

Rectangle Area

示例:

输入: -3, 0, 3, 4, 0, -1, 9, 2 输出: 45

说明: 假设矩形面积不会超出 int 的范围。
我写的可能较为繁琐,有非常简单的方法求的交汇矩形的面积,这里我只贴出我自己的笨方法

 public int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {

        int S1 = (C - A) * (D - B);
        int S2 = (G - E) * (H - F);
        if (E >= C || B >= H || A >= G || F >= D)
            return S1 + S2;
        int s = 0;
        //m在n内部
        if (C >= G && E >= A && F >= B && D >= H) {
            return S1;
        }
        //n在m内部
        else if (G >= C && A >= E && B >= F && H >= D) {
            return S2;
        } else {
            int w, h;
            //计算交合矩形宽度
            w = getH(G, E, C, A, C - E, G - A, G - E, C - A);
            //计算交合矩形高
            h = getH(B, D, F, H, H - B, D - F, H - F, D - B);
            s = S1 + S2 - w * h;
        }

        return s;
    }

    private int getH(int B, int D, int F, int H, int i, int i2, int i3, int i4) {
        int h;
        if (D >= H && B >= F) {
            h = i;
        } else if (H >= D && F >= B) {
            h = i2;
        } else if (D >= H) {
            h = i3;
        } else {
            h = i4;
        }
        return h;
    }

猜你喜欢

转载自blog.csdn.net/qq_35170267/article/details/81218092