题目
Find the total area covered by two rectilinear rectangles in a 2D plane.
Each rectangle is defined by its bottom left corner and top right corner as shown in the figure.
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIH5EUuUGbn5WY0NWZS92d09VZk92Y0VWZs9CXt92Yu4GZkV3bsNmLix2ZuAjeuETbvNmL0pnbrh3Nvw1LcpDc0RHaiojIsJye.png)
Rectangle Area
Assume that the total area is never beyond the maximum possible value of int.
思路
此题比较简单,当两个矩形有交集时,则结果就是两个矩形的面积减去两个矩形的交集。如果两个矩形没有交集,则就是两个矩形的面积之和。 判断有无交集只需要判断四种情况(在上面、下面、左边、右边;其中包括了在左上方呀右上方呀左下方呀右下方)即可。
int max(int a,int b){
return a>b?a:b;
}
int min(int a,int b){
return a<b?a:b;
}
int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {
if(C<A||D<B||G<E||H<F){//矩形有效性检查
return ;
}
int twoRectArea=(C-A)*(D-B)+(G-E)*(H-F);
int x0=max(A,E);
int y0=max(B,F);
int x1=min(C,G);
int y1=min(D,H);
int intersectArea=(x1-x0)*(y1-y0);
if(C<=E||D<=F||G<=A||H<=B){//没有交集
return twoRectArea;
}
else{
return twoRectArea-intersectArea;
}
}