You are given a 2D 0-indexed integer array dimensions.
For all indices i, 0 <= i < dimensions.length, dimensions[i][0] represents the length and dimensions[i][1] represents the width of the rectangle i.
Return the area of the rectangle having the longest diagonal. If there are multiple rectangles with the longest diagonal, return the area of the rectangle having the maximum area.
Example 1:
Input: dimensions = [[9,3],[8,6]] Output: 48 Explanation: For index = 0, length = 9 and width = 3. Diagonal length = sqrt(9 * 9 + 3 * 3) = sqrt(90) ≈ 9.487. For index = 1, length = 8 and width = 6. Diagonal length = sqrt(8 * 8 + 6 * 6) = sqrt(100) = 10. So, the rectangle at index 1 has a greater diagonal length therefore we return area = 8 * 6 = 48.
Example 2:
Input: dimensions = [[3,4],[4,3]] Output: 12 Explanation: Length of diagonal is the same for both which is 5, so maximum area = 12.
Constraints:
1 <= dimensions.length <= 100dimensions[i].length == 21 <= dimensions[i][0], dimensions[i][1] <= 100In this approach, we will iterate through all the given rectangles, compute the diagonal for each rectangle using the Pythagorean theorem, and keep track of the longest diagonal and corresponding area. If a longer diagonal is found, or if the diagonal length is the same but the area is larger, we will update our result.
The program iterates over each rectangle in the dimensions array, computes the diagonal using the Pythagorean theorem, and measures the area by multiplying its length and width. It maintains the maximum diagonal and respective area found so far.
C++
Java
Python
C#
JavaScript
Time Complexity: O(n) where n is the number of rectangles.
Space Complexity: O(1) as no additional data structures are used.
Instead of calculating the square root for diagonal lengths during each comparison, precompute the square of the diagonals for all rectangles. This avoids the computational complexity of repeatedly taking square roots, making comparisons faster (using diagonal squares instead of actual lengths).
This C solution calculates the squared value of the diagonal lengths and avoids taking square roots during comparisons, improving performance by only utilizing integer operations.
C++
Java
Python
C#
JavaScript
Time Complexity: O(n) where n is the number of rectangles. This avoids costly sqrt calculations.
Space Complexity: O(1).
| Approach | Complexity |
|---|---|
| Approach 1: Naive Linear Search | Time Complexity: O(n) where n is the number of rectangles. |
| Approach 2: Precompute Diagonal Squares | Time Complexity: O(n) where n is the number of rectangles. This avoids costly sqrt calculations. |
LARGEST RECTANGLE IN HISTOGRAM - Leetcode 84 - Python • NeetCode • 287,868 views views
Watch 9 more video solutions →Practice Maximum Area of Longest Diagonal Rectangle with our built-in code editor and test cases.
Practice on FleetCode