题目:
难度:中等
在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积。
每个矩形由其左下顶点和右上顶点坐标表示,如图所示。
示例:
输入: -3, 0, 3, 4, 0, -1, 9, 2
输出: 45
说明: 假设矩形面积不会超出 int 的范围。
题解:
直接暴力性能还不错接近双百
解题思路
- 首先要判断两个矩形是否相交的情况,如果相交就计算相交的面积
- 然后就是计算两个矩形面积
- 最后总面积:两个矩形面积 - 相交面积
代码
class Solution {
public:
int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {
int x = 0, y = 0;
if(H >= B && G >= A && E <= C && F <= D){
x = min(C, G) - max(A, E);
y = min(D, H) - max(B, F);
}
long area1 = (C - A) * (D - B);
long area2 = (G - E) * (H - F);
return area1 + area2 - x * y;
}
};