Every day a Leetcode
题目来源:223. 矩形面积
解法1:数学
两个矩形覆盖的总面积等于两个矩形的面积之和减去两个矩形的重叠部分的面积。由于两个矩形的左下顶点和右上顶点已知,因此两个矩形的面积可以直接计算。如果两个矩形重叠,则两个矩形的重叠部分也是矩形,重叠部分的面积可以根据重叠部分的边界计算。

代码:
/*
* @lc app=leetcode.cn id=223 lang=cpp
*
* [223] 矩形面积
*/
// @lc code=start
class Solution
{
public:
int computeArea(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2)
{
int area1 = (ax2 - ax1) * (ay2 - ay1);
int area2 = (bx2 - bx1) * (by2 - by1);
int cx = max(min(ax2, bx2) - max(ax1, bx1), 0);
int cy = max(min(ay2, by2) - max(ay1, by1), 0);
return area1 + area2 - cx * cy;
}
};
// @lc code=end
结果:

复杂度分析:
时间复杂度:O(1)。
空间复杂度:O(1)。
博客围绕LeetCode 223题矩形面积展开,介绍了一种数学解法。该解法通过两个矩形面积之和减去重叠部分面积来计算覆盖总面积。已知矩形顶点可直接算面积,若重叠,重叠部分也是矩形,可根据边界算其面积。还给出复杂度分析,时间和空间复杂度均为O(1)。
356

被折叠的 条评论
为什么被折叠?



