【教3妹学编程-算法题】对角线最长的矩形的面积

2024-01-08 10:29:25

瑟瑟发抖

3妹:好冷啊, 冻得瑟瑟发抖啦
2哥 : 这才哪跟哪,上海这几天温度算是高的啦。你看看哈尔滨,那才是冰城。
3妹:据说沈阳千名“搓澡大姨”支援哈尔滨?哈哈哈哈
2哥 : 就像今年的淄博烧烤,可能有炒作的成分
3妹:不不,是去年的了,今年已经24年啦。 2哥,你说哈尔滨的面积是多少,这么多人涌入哈尔滨,能住的下嘛。
2哥:这个就不用担心啦,自然是住得下的。 说到面积,我们是不是又该做每日一题啦?刚好今天的题目是关于面积的~

吃瓜

题目:

给你一个下标从 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

思路:

思考

遍历,
设长宽分别为 x 和 y。

根据勾股定理,对角线长度的平方为

x2+y2

本题是双关键字比较,第一关键字是对角线长度,我们直接用其平方值。如果遍历到更大的长度,则覆盖矩形面积。

第二关键字是矩形面积,即 x*y。如果遇到了和最长长度一样长的矩形,那么更新面积的最大值。

java代码:

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;
    }
}

文章来源:https://blog.csdn.net/kangbin825/article/details/135449184
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。