列表

详情


3000. 对角线最长的矩形的面积

给你一个下标从 0 开始的二维整数数组 dimensions

对于所有下标 i0 <= 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。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int areaOfMaxDiagonal(vector<vector<int>>& dimensions) { } };

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]

上一题