在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积。
每个矩形由其左下顶点和右上顶点坐标表示,如图所示。
示例:
输入: -3, 0, 3, 4, 0, -1, 9, 2
输出: 45
说明: 假设矩形面积不会超出 int 的范围。
解
总体思路为用2个矩形面积减去重叠部分的面积,所以第一步需要判断是否有重叠面积,如果有需要计算重叠部分面积。只需用注意定点间的对应关系即可完成。
public static int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {
int temp = 0;
if(E>=C||G<=A||D>=F||H<=B)
temp = 0;
else {
int x1 = Math.max(A, E);
int x2 = Math.min(C,G);
int y1 = Math.max(B, F);
int y2 = Math.min(D, H);
temp = Math.abs((x1-x2)*(y1-y2));
}
return Math.abs((A-C)*(B-D)) + Math.abs((E-G)*(F-H)) - temp;
}