題目
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;
}
}