223. Rectangle Area
Medium
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.
Rectangle Area
Example:
Input: A = -3, B = 0, C = 3, D = 4, E = 0, F = -1, G = 9, H = 2
Output: 45
Note:
Assume that the total area is never beyond the maximum possible value of int.
题意
给定两个用对角点表示的矩形,求矩形的总覆盖面积(其实就是求矩形的相交面积)
思路
简单的分情况讨论
代码
class Solution {
private:
inline void swap(int &a, int &b) {
int tmp = a;
a = b;
b = tmp;
}
public:
int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {
// ensure A <= E
if (A > E) {
swap(A, E);
swap(B, F);
swap(C, G);
swap(D, H);
}
return D <= F || C <= E || H <= B? (long)(C-A)*(long)(D-B) + (long)(G-E)*(long)(H-F): (long)(C-A)*(long)(D-B) + (long)(G-E)*(long)(H-F) - (long)(min(D, H) - max(B, F)) * (long)(min(C, G) - max(A, E));
}
};