解题思路:
着重研究一下矩形四个顶点坐标的大小关系。
if 条件语句中判断是否出现不重叠的情况。
当出现重叠时,需要找出重叠矩形的四个顶点坐标:在小的横坐标中找出更大者,就是重叠矩形中较大的横坐标值 x1,在大的横坐标中找出更小者,就是重叠矩形中较小的横坐标值 x2。重叠矩形的纵坐标也同理可得。
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);
if(C < E || A > G || B > H || D < F) return area1 + area2;
else{
int x1 = min(C, G); // 大的横坐标中谁更小
int x2 = max(A, E); // 小的横坐标中谁更大
int y1 = min(D, H);
int y2 = max(B, F);
return area1 - (x1 - x2) * (y1 - y2) + area2;
}
}
};