Skip to content

Latest commit

 

History

History
42 lines (29 loc) · 1.24 KB

223-矩形面积.md

File metadata and controls

42 lines (29 loc) · 1.24 KB

223-矩形面积

原题

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

每个矩形由其左下顶点和右上顶点坐标表示

示例:

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

解法

如果没有重叠,就直接返回两个矩形的面积

要考虑重叠的情况,因为一定有重叠,所以可以找到上下左右边界

上边界,取两个矩形的上边界的最小值 下边界,取两个矩形的下边界的最大值 左边界,取两个矩形的左边界的最大值 右边界,取两个矩形的右边界的最小值

得到重叠面积,重叠后形成的总面积只需要两个矩形相加减去重叠面积即可

const computeArea = function(A, B, C, D, E, F, G, H) {
    if (D <= F || E >= C || B >= H || G <= A) {
        return (D - B) * (C - A) + (H - F) * (G - E);
    }

    let left = Math.max(A, E);
    let right = Math.min(C, G);
    let up = Math.max(H, D);
    let down = Math.min(F, B);

    return (D - B) * (C -A) + (H - F) * (G - E) - (up - down) * (right - left);
}

为了便于看懂上方的参数是什么意思,还是有必要把原题中的图放进来