题目:求2个矩形加起来覆盖的面积
分析:主要要考虑重叠的判断。2个矩形若重叠,那么在水平方向它们左侧起点的最右端应该比右侧起点的最左端左,同时垂直方向,下侧起点的最上端比上侧的最下端要下。
答案:
class Solution {
public:
int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {
int area1 = (C-A)*(D-B);
int area2 = (G-E)*(H-F);
int maxlow_x = max(A,E); int minhigh_x = min(C,G);
int maxlow_y = max(B,F); int minhigh_y = min(D,H);
if (maxlow_x <= minhigh_x && maxlow_y <= minhigh_y)
return (area1 + area2 - (maxlow_x - minhigh_x)*(maxlow_y - minhigh_y));
else
return (area1 + area2);
}
};