天天看点

《leetCode》:Rectangle Area

题目

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.

《leetCode》:Rectangle Area

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

}