在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积。
每个矩形由其左下顶点和右上顶点坐标表示
示例:
输入: -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);
}