Description
There exist n rectangles in a 2D plane with edges parallel to the x and y axis. You are given two 2D integer arrays bottomLeft and topRight where bottomLeft[i] = [a_i, b_i] and topRight[i] = [c_i, d_i] represent the bottom-left and top-right coordinates of the ith rectangle, respectively.
You need to find the maximum area of a square that can fit inside the intersecting region of at least two rectangles. Return 0 if such a square does not exist.
Example 1:
Input: bottomLeft = [[1,1],[2,2],[3,1]], topRight = [[3,3],[4,4],[6,6]]
Output: 1
Explanation:
A square with side length 1 can fit inside either the intersecting region of rectangles 0 and 1 or the intersecting region of rectangles 1 and 2. Hence the maximum area is 1. It can be shown that a square with a greater side length can not fit inside any intersecting region of two rectangles.
Example 2:
Input: bottomLeft = [[1,1],[1,3],[1,5]], topRight = [[5,5],[5,7],[5,9]]
Output: 4
Explanation:
A square with side length 2 can fit inside either the intersecting region of rectangles 0 and 1 or the intersecting region of rectangles 1 and 2. Hence the maximum area is 2 * 2 = 4. It can be shown that a square with a greater side length can not fit inside any intersecting region of two rectangles.
Example 3:
Input: bottomLeft = [[1,1],[2,2],[1,2]], topRight = [[3,3],[4,4],[3,4]]
Output: 1
Explanation:
A square with side length 1 can fit inside the intersecting region of any two rectangles. Also, no larger square can, so the maximum area is 1. Note that the region can be formed by the intersection of more than 2 rectangles.
Example 4:
Input: bottomLeft = [[1,1],[3,3],[3,1]], topRight = [[2,2],[4,4],[4,2]]
Output: 0
Explanation:
No pair of rectangles intersect, hence, the answer is 0.
Constraints:
n == bottomLeft.length == topRight.length2 <= n <= 103bottomLeft[i].length == topRight[i].length == 21 <= bottomLeft[i][0], bottomLeft[i][1] <= 1071 <= topRight[i][0], topRight[i][1] <= 107bottomLeft[i][0] < topRight[i][0]bottomLeft[i][1] < topRight[i][1]
Solutions
This function finds the largest square area that can fit in the intersection of two rectangles by iterating through all pairs of rectangles. For each pair, it extracts the bottom-left and top-right coordinates (bottomLeft and topRight) to determine the bounding box of the intersection: the width is calculated as min(right edges) - max(left edges) and the height as min(top edges) - max(bottom edges). Since a square requires equal width and height, the side length is min(width, height), and the area is the side length squared. The algorithm keeps track of the maximum area found across all pairs and returns it at the end.
/**
* @param {number[][]} bottomLeft
* @param {number[][]} topRight
* @return {number}
*/
var largestSquareArea = function (bottomLeft, topRight) {
const n = bottomLeft.length;
let maxSide = 0;
for (let i = 0; i < n; i++) {
for (let j = i + 1; j < n; j++) {
const [b1w, b1h] = bottomLeft[i];
const [t1w, t1h] = topRight[i];
const [b2w, b2h] = bottomLeft[j];
const [t2w, t2h] = topRight[j];
const w = Math.min(t1w, t2w) - Math.max(b1w, b2w);
const h = Math.min(t1h, t2h) - Math.max(b1h, b2h);
maxSide = Math.max(maxSide, Math.min(w, h));
}
}
return maxSide * maxSide;
};