class Solution {
public:
int areaOfMaxDiagonal(vector<vector<int>>& dimensions) {
}
};
3000. 对角线最长的矩形的面积
给你一个下标从 0 开始的二维整数数组 dimensions
。
对于所有下标 i
(0 <= i < dimensions.length
),dimensions[i][0]
表示矩形 i
的长度,而 dimensions[i][1]
表示矩形 i
的宽度。
返回对角线最 长 的矩形的 面积 。如果存在多个对角线长度相同的矩形,返回面积最 大 的矩形的面积。
示例 1:
输入:dimensions = [[9,3],[8,6]] 输出:48 解释: 下标 = 0,长度 = 9,宽度 = 3。对角线长度 = sqrt(9 * 9 + 3 * 3) = sqrt(90) ≈ 9.487。 下标 = 1,长度 = 8,宽度 = 6。对角线长度 = sqrt(8 * 8 + 6 * 6) = sqrt(100) = 10。 因此,下标为 1 的矩形对角线更长,所以返回面积 = 8 * 6 = 48。
示例 2:
输入:dimensions = [[3,4],[4,3]] 输出:12 解释:两个矩形的对角线长度相同,为 5,所以最大面积 = 12。
提示:
1 <= dimensions.length <= 100
dimensions[i].length == 2
1 <= dimensions[i][0], dimensions[i][1] <= 100
原站题解
golang 解法, 执行用时: 4 ms, 内存消耗: 3.5 MB, 提交时间: 2024-01-14 12:26:04
func areaOfMaxDiagonal(dimensions [][]int) (ans int) { maxL := 0 for _, d := range dimensions { x, y := d[0], d[1] l := x*x + y*y if l > maxL || l == maxL && x*y > ans { maxL = l ans = x * y } } return }
cpp 解法, 执行用时: 24 ms, 内存消耗: 24.7 MB, 提交时间: 2024-01-14 12:25:52
class Solution { public: int areaOfMaxDiagonal(vector<vector<int>> &dimensions) { int ans = 0, max_l = 0; for (auto &d: dimensions) { int x = d[0], y = d[1]; int l = x * x + y * y; if (l > max_l || (l == max_l && x * y > ans)) { max_l = l; ans = x * y; } } return ans; } };
java 解法, 执行用时: 0 ms, 内存消耗: 43.2 MB, 提交时间: 2024-01-14 12:25:20
class Solution { public int areaOfMaxDiagonal(int[][] dimensions) { int ans = 0, maxL = 0; for (int[] d : dimensions) { int x = d[0], y = d[1]; int l = x * x + y * y; if (l > maxL || (l == maxL && x * y > ans)) { maxL = l; ans = x * y; } } return ans; } }
python3 解法, 执行用时: 40 ms, 内存消耗: 17.1 MB, 提交时间: 2024-01-14 12:24:56
class Solution: def areaOfMaxDiagonal(self, dimensions: List[List[int]]) -> int: return max((x * x + y * y, x * y) for x, y in dimensions)[1]