1有点暴力的思想。对于每个掉落的方块通过intes 找到可能和它会黏在一起的方块,同时更新每个区间的方块的值。在这个过程中慢慢构成答案
class Solution {
public:
vector<int> fallingSquares(vector<vector<int>>& positions) {
vector<int> ans;
map<pair<int,int>,int> intes;
int mh=INT_MIN;
for(auto position:positions){
int s=position[0];
int h=position[1];
int e=s+h;
auto it=intes.begin();
vector<vector<int>> ranges;
int maxh=h;
while(it!=intes.end()){
int its=it->first.first;
int ite=it->first.second;
int ith=it->second;
if(ite<=s){
it++;
continue;
}
if(its>=e) break;
if(its<s) ranges.push_back({its,s,ith});
if(ite>e) ranges.push_back({e,ite,ith});
maxh=max(maxh,h+ith);
it=intes.erase(it);
}
intes[{s,e}]=maxh;
mh=max(mh,maxh);
ans.push_back(mh);
for(auto range:ranges){
intes[{range[0],range[1]}]=range[2];
}
}
return ans;
}
};