在二维平面上计算出两个由直线构成的矩形叠加覆盖后的面积。
每个矩形由其左下顶点和右上顶点坐标表示,如图所示。
假设面积不会超出int的范围。
致谢:
特别感谢 @mithmatt 添加本题,提供示例图片以及创建所有测试用例。
这程序写的太他妈好了,保存一下。
class Solution {
public:
int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {
int total = (C-A) * (D-B) + (G-E) * (H-F);
if (C<=E || A>=G || B>=H || D<=F )
return total;
else
{
vector <int> h;
h.push_back(A);
h.push_back(C);
h.push_back(E);
h.push_back(G);
vector <int> v;
v.push_back(B);
v.push_back(D);
v.push_back(F);
v.push_back(H);
sort(h.begin(), h.end());
sort(v.begin(), v.end());
total = total - (h[2] - h [1]) * (v[2] - v[1]);
return total;
}
}
};