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.
很简单的一道题,纯考写代码。注意边界就好。
int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {
int len1=C-A;
int wid1=D-B;
int len2=G-E;
int wid2=H-F;
int len=0,wid=0;
if(C<=E||A>=G||B>=H||D<=F) return len1*wid1+len2*wid2;//不相交直接加和
if(C<G){//相交长度
if(A<E){
len=C-E;
}else len=len1;
}else{
if(A>E){
len=G-A;
}else len=len2;
}
if(D>H){//相交宽度
if(B>F){
wid=H-B;
}else wid=wid2;
}else{
if(B<F){
wid=D-F;
}else wid=wid1;
}
return len1*wid1+len2*wid2-len*wid;
}