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)。