您的位置:首页 > 编程语言 > C语言/C++

leetcode 日经贴,Cpp code -The Skyline Problem

2015-05-26 11:42 253 查看
The Skyline Problem

class Solution {
public:
vector<pair<int, int>> getSkyline(vector<vector<int>>& buildings) {
vector<pair<int, int> > vertical_lines;
for (int i = 0; i < buildings.size(); ++i) {
vector<int> &building = buildings[i];
vertical_lines.push_back(make_pair(building[0], -building[2]));
vertical_lines.push_back(make_pair(building[1], building[2]));
}
sort(vertical_lines.begin(), vertical_lines.end());
multiset<int> mset;
vector<pair<int, int> > olist;
int lasty = 0;
for (int i = 0; i < vertical_lines.size(); ++i) {
int x = vertical_lines[i].first, y = vertical_lines[i].second;
if (y < 0) {
mset.insert(-y);
} else {
multiset<int>::iterator itr = mset.find(y);
mset.erase(itr);
}
int currenty = 0;
if (!mset.empty()) {
currenty = *mset.rbegin();
}
if (currenty != lasty) {
olist.push_back(make_pair(x, currenty));
lasty = currenty;
}
}
return olist;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: