方法一:
扫描线+数组区间更新:时间复杂度O(N*N)
class Solution {
public:
struct StateNode{
int y;
int tp;
int x1;
int x2;
void puts(int yy,int t,int xa,int xb){
y = yy; tp = t; x1 = xa; x2 = xb;
}
bool operator < (const StateNode& x) const{
if(this->y < x.y) return true;
return false;
}
};
int rectangleArea(vector<vector<int>>& rectangles) {
int N = rectangles.size();
StateNode sn[N*2];
map<int,int> mp,pm;
for(int i=0;i<N;i++){
sn[i].puts(rectangles[i][1],1,rectangles[i][0],rectangles[i][2]);
sn[i+N].puts(rectangles[i][3],-1,rectangles[i][0],rectangles[i][2]);
mp[rectangles[i][0]] = mp[rectangles[i][2]] = 1;
}
sort(sn,sn+N+N);
int M = 1;
for(map<int,int>::