力扣 223. 矩形面积

 

class Solution {
public:
    int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {
        if(B<H&&C>E&&F<D&&G>A) //判断是否有重叠

        return (C-A)*(D-B)-min(min(min((H-B),(D-B)),(H-F)),(D-F))*min(min(min((C-A),(G-E)),(C-E)),(G-A))+(G-E)*(H-F);  //有重叠时总面积=面积和-重叠面积,重叠部分的长度等于min((H-B),(D-B),(H-F),(D-F)),宽度等于min((C-A),(G-E)),(C-E)),(G-A))。由于两个矩形的面积和可能数值过大导致溢出,所以要先用一个矩形面积减去重叠部分再加上另一个矩形面积。

        else return (C-A)*(D-B)+(G-E)*(H-F); //无重叠返回面积和
    }
};

 

posted @ 2021-11-25 19:15  刘通1997  阅读(58)  评论(0)    收藏  举报