223. 矩形面积
在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积。
每个矩形由其左下顶点和右上顶点坐标表示,如图所示。
示例:
输入: -3, 0, 3, 4, 0, -1, 9, 2
输出: 45
解题
两个长方形面积-重叠面积;
关键点
重叠部分的左下坐标为 int lbx=max(A,E),lby=max(B,F);
重叠部分的右上坐标为int rtx=min(C,G),rty=min(D,H);
若左下坐标在右上坐标左下方,说明有重叠部分,否则无需计算重叠部分;
class Solution {
public:
int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {
int area1=(C-A)*(D-B);
int area2=(G-E)*(H-F);
int lbx=max(A,E);
int lby=max(B,F);
int rtx=min(C,G);
int rty=min(D,H);
if(lbx<rtx&&rty>lby) return area1-((rtx-lbx)*(rty-lby))+area2;
else return area1+area2;
}
};