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); //无重叠返回面积和 } };