返回介绍

solution / 3000-3099 / 3000.Maximum Area of Longest Diagonal Rectangle / README

发布于 2024-06-17 01:02:58 字数 3480 浏览 0 评论 0 收藏 0

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

English Version

题目描述

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

 

提示:

  • 1 <= dimensions.length <= 100
  • dimensions[i].length == 2
  • 1 <= dimensions[i][0], dimensions[i][1] <= 100

解法

方法一

class Solution:
  def areaOfMaxDiagonal(self, dimensions: List[List[int]]) -> int:
    ans = mx = 0
    for l, w in dimensions:
      t = l**2 + w**2
      if mx < t:
        mx = t
        ans = l * w
      elif mx == t:
        ans = max(ans, l * w)
    return ans
class Solution {
  public int areaOfMaxDiagonal(int[][] dimensions) {
    int ans = 0, mx = 0;
    for (var d : dimensions) {
      int l = d[0], w = d[1];
      int t = l * l + w * w;
      if (mx < t) {
        mx = t;
        ans = l * w;
      } else if (mx == t) {
        ans = Math.max(ans, l * w);
      }
    }
    return ans;
  }
}
class Solution {
public:
  int areaOfMaxDiagonal(vector<vector<int>>& dimensions) {
    int ans = 0, mx = 0;
    for (auto& d : dimensions) {
      int l = d[0], w = d[1];
      int t = l * l + w * w;
      if (mx < t) {
        mx = t;
        ans = l * w;
      } else if (mx == t) {
        ans = max(ans, l * w);
      }
    }
    return ans;
  }
};
func areaOfMaxDiagonal(dimensions [][]int) (ans int) {
  mx := 0
  for _, d := range dimensions {
    l, w := d[0], d[1]
    t := l*l + w*w
    if mx < t {
      mx = t
      ans = l * w
    } else if mx == t {
      ans = max(ans, l*w)
    }
  }
  return
}
function areaOfMaxDiagonal(dimensions: number[][]): number {
  let [ans, mx] = [0, 0];
  for (const [l, w] of dimensions) {
    const t = l * l + w * w;
    if (mx < t) {
      mx = t;
      ans = l * w;
    } else if (mx === t) {
      ans = Math.max(ans, l * w);
    }
  }
  return ans;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文