方法一:
扫描线+数组区间更新:时间复杂度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>::iterator p=mp.begin();p!=mp.end();p++){
p->second = M;

最低0.47元/天 解锁文章
5849

被折叠的 条评论
为什么被折叠?



