当前位置: 首页 > news >正文

LeetCode 3000.对角线最长的矩形的面积:一次遍历

【LetMeFly】3000.对角线最长的矩形的面积:一次遍历

力扣题目链接:https://leetcode.cn/problems/maximum-area-of-longest-diagonal-rectangle/

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

解题方法:遍历维护最大值

使用一个变量l2维护最大的对角线长度的平方(避免无意义的开根号),遍历所有矩形:

  • 如果当前矩形对角线长度的平方大于l2,则更新l2并直接更新答案为当前矩形的面积;
  • 否则如果当前对角线长度的平方等于l2,则更新答案为当前矩形面积和答案的最大值。

时空复杂度分析

  • 时间复杂度O(len(dimensions))O(len(dimensions))O(len(dimensions))
  • 空间复杂度O(1)O(1)O(1)

AC代码

C++
/** @Author: LetMeFly* @Date: 2025-08-26 21:25:10* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-08-26 21:32:11*/
class Solution {
public:int areaOfMaxDiagonal(vector<vector<int>>& dimensions) {int ans = 0;int M = 0;for (vector<int>& d : dimensions) {int l2 = d[0] * d[0] + d[1] * d[1];if (l2 > M) {M = l2;ans = d[0] * d[1];} else if (l2 == M) {ans = max(ans, d[0] * d[1]);}}return ans;}
};#if defined(_WIN32) || defined(__APPLE__)
/*
[[6,5],[8,6],[2,10],[8,1],[9,2],[3,5],[3,5]]
*/
int main() {string s;while (cin >> s) {vector<vector<int>> v = stringToVectorVector(s);Solution sol;cout << sol.areaOfMaxDiagonal(v) << endl;}return 0;
}
#endif
Python
'''
Author: LetMeFly
Date: 2025-08-26 21:25:10
LastEditors: LetMeFly.xyz
LastEditTime: 2025-08-26 21:34:38
'''
from typing import List
class Solution:def areaOfMaxDiagonal(self, dimensions: List[List[int]]) -> int:ans = M = 0for a, b in dimensions:l2 = a * a + b * bif l2 > M:M = l2ans = a * belif l2 == M:ans = max(ans, a * b)return ans
Java
/** @Author: LetMeFly* @Date: 2025-08-26 21:25:10* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-08-26 21:36:58*/
class Solution {public int areaOfMaxDiagonal(int[][] dimensions) {int ans = 0;int M = 0;for (int[] d : dimensions) {int l2 = d[0] * d[0] + d[1] * d[1];if (l2 > M) {M = l2;ans = d[0] * d[1];} else if (l2 == M) {ans = Math.max(ans, d[0] * d[1]);}}return ans;}
}
Go
/** @Author: LetMeFly* @Date: 2025-08-26 21:25:10* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-08-26 21:36:14*/
package mainfunc areaOfMaxDiagonal(dimensions [][]int) (ans int) {M := 0for _, d := range dimensions {l2 := d[0] * d[0] + d[1] * d[1]if l2 > M {M = l2ans = d[0] * d[1]} else if l2 == M {ans = max(ans, d[0] * d[1])}}return
}
Rust
/** @Author: LetMeFly* @Date: 2025-08-26 21:25:10* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-08-26 21:40:59*/
impl Solution {pub fn area_of_max_diagonal(dimensions: Vec<Vec<i32>>) -> i32 {let mut ans: i32 = 0;let mut m: i32 = 0;for d in dimensions.iter() {let l2: i32 = d[0] * d[0] + d[1] * d[1];if l2 > m {m = l2;ans = d[0] * d[1];} else if l2 == m {ans = ans.max(d[0] * d[1]);}}ans}
}

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源

http://www.dtcms.com/a/351819.html

相关文章:

  • 【golang长途旅行第32站】反射
  • 【机器学习深度学习】连续微调与权重合并的陷阱与最佳实践
  • 修改C盘缓存文件路径
  • MongoDB /redis/mysql 界面化的数据查看页面App
  • UCIE Specification详解(八)
  • 在MiniOB源码中学习使用Flex与Bison解析SQL语句-第一节
  • Rust 环境搭建与 SeekStorm 项目编译部署(支持中文)
  • Robrain V2.0正式登场:落地人形机器人,引爆智能进化革命
  • Ubuntu操作系统下使用mysql、mongodb、redis
  • [特殊字符] CentOS 7 升级 OpenSSH 10.0p2 完整教程(含 Telnet 备份)
  • 如果 我退休了
  • 汽车域控中Hypervisor方案极致安全原理与弊端
  • APP UI自动化测试的思路总结
  • 破解豆瓣Ajax动态加载:Python爬取完整长评论和短评
  • Java面试实战系列【JVM篇】- JVM内存结构与运行时数据区详解(私有区域)
  • 数据结构:链式队列尝试;0826
  • poi生成word固定表格列宽
  • Spring - 文件上传与下载:真正的企业开发高频需求——Spring Boot文件上传与下载全场景实践指南
  • 位运算卡常技巧详解
  • Charles抓包微信小程序请求响应数据
  • 信号无忧,转决千里:耐达讯自动化PROFIBUS集线器与编码器连接术
  • 快速了解卷积神经网络
  • springweb项目中多线程使用详解
  • 问:单证硕士含金量是否不足?
  • 【Linux 进程】进程程序替换
  • 【GitHub】使用SSH与GitHub交互
  • 工业大模型五层架构全景解析:从算力底座到场景落地的完整链路
  • PyCharm注释详解:TODO、文档注释、注释
  • MySQL 索引:结构、对比与操作实践指南
  • 【合适新人】预测图片教程——如何随机抽取验证集图片进行可视化推理!(附完整代码)