Rectangle Area

Problem Description

Given the coordinates of two rectilinear rectangles in a 2D plane, return the total area covered by the two rectangles.

The first rectangle is defined by its bottom-left corner (ax1, ay1) and its top-right corner (ax2, ay2).

The second rectangle is defined by its bottom-left corner (bx1, by1) and its top-right corner (bx2, by2).

 

Example 1:

Rectangle Area
Input: ax1 = -3, ay1 = 0, ax2 = 3, ay2 = 4, bx1 = 0, by1 = -1, bx2 = 9, by2 = 2
Output: 45

Example 2:

Input: ax1 = -2, ay1 = -2, ax2 = 2, ay2 = 2, bx1 = -2, by1 = -2, bx2 = 2, by2 = 2
Output: 16

 

Constraints:

Solution (JavaScript)

/**
 * @param {number} ax1
 * @param {number} ay1
 * @param {number} ax2
 * @param {number} ay2
 * @param {number} bx1
 * @param {number} by1
 * @param {number} bx2
 * @param {number} by2
 * @return {number}
 */
var computeArea = function(ax1, ay1, ax2, ay2, bx1, by1, bx2, by2) {
    let sum = (ax2-ax1)*(ay2-ay1) + (bx2-bx1)*(by2-by1);
    if (bx1 >= ax2 || ax1 >= bx2 || by1 >= ay2 || ay1 >= by2) return sum;

    const left = bx1 >= ax1 ? bx1 : ax1;
    const right = bx2 >= ax2 ? ax2 : bx2;
    const top = by2 >= ay2 ? ay2 : by2;
    const bottom = by1 >= ay1 ? by1 : ay1;

    return sum - (right - left) * (top - bottom);
};