<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      218. The Skyline Problem (LeetCode)

      天際線問題,參考自: 百草園

      天際線為當(dāng)前線段的最高高度,所以用最大堆處理,當(dāng)遍歷到線段右端點時需要刪除該線段的高度,priority_queue不提供刪除的操作,要用unordered_map來標(biāo)記要刪除的元素。從heap中pop的時候先看有沒有被標(biāo)記過,如果標(biāo)記過,就一直pop直到空或都找到?jīng)]被標(biāo)記過的值(之前的值被標(biāo)記過也要刪除干凈,因為到當(dāng)前x坐標(biāo)時,標(biāo)記過的高度已失效)。為排除冗余答案,需要提前對線段排序,橫坐標(biāo)相等時,都是左端點,按y從大到小(只記錄高的端點),都是右端點,按y從小到大(只記錄高的端點),一左一右,左在前右在后,不重復(fù)記錄。

       1 class Solution {
       2 private:
       3     enum NODE_TYPE {LEFT, RIGHT};
       4     struct node{
       5         int x,y;
       6         NODE_TYPE type;
       7         node(int _x, int _y, NODE_TYPE _type): x(_x),y(_y),type(_type){}
       8     };
       9     
      10 public:
      11     vector<vector<int>> getSkyline(vector<vector<int>>& buildings) {
      12         vector<node> height;
      13         for(int i=0;i<buildings.size();i++){
      14             height.push_back(node(buildings[i][0],buildings[i][2],LEFT));
      15             height.push_back(node(buildings[i][1],buildings[i][2],RIGHT));
      16         }
      17         sort(height.begin(),height.end(),[](const node &a, const node& b) {
      18             if(a.x!=b.x)return a.x<b.x;
      19             else if(a.type==b.type && a.type == LEFT) return a.y>b.y;
      20             else if(a.type==b.type && a.type == RIGHT) return a.y<b.y;
      21             else return a.type == LEFT;
      22         });
      23         priority_queue<int> heap;
      24         heap.push(0);
      25         unordered_map<int,int> mp; // remove the element in heap
      26         int cur=0,pre=0;
      27         vector<vector<int>> res;
      28         for(auto & h : height){
      29             if(h.type == LEFT){
      30                 heap.push(h.y);
      31             } else {
      32               mp[h.y]++;
      33                 while(!heap.empty()&&mp[heap.top()]>0) {
      34                     mp[heap.top()]--;
      35                     heap.pop();
      36                 }
      37             }
      38             cur = heap.top();
      39             if(cur!=pre){
      40                 res.push_back({h.x,cur});
      41                 pre = cur;
      42             }
      43         }
      44         return res;
      45     }
      46 };

       

      posted @ 2019-07-13 20:18  demianzhang  閱讀(269)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产尤物精品自在拍视频首页| 国产精品一区二区国产馆| 国产一区二区三区AV在线无码观看| 精品国产精品午夜福利| 久久亚洲精品无码va白人极品| 日韩一区二区三区日韩精品| 精品一区二区三区蜜桃久| 国产精品中文一区二区| 博罗县| 男女啪啪高清无遮挡免费| 精品亚洲综合一区二区三区| 国产午夜精品久久久久免费视| 偷拍精品一区二区三区| 国产精品美腿一区在线看| 国产一区二区三区导航| 成人3D动漫一区二区三区| 一面膜上边一面膜下边视频| 成人福利国产午夜AV免费不卡在线| 无线日本视频精品| 国产女人看国产在线女人| 91精品国产综合蜜臀蜜臀| 久久永久视频| 免费无码成人AV片在线| 久久久久人妻精品一区三寸| 成人无码潮喷在线观看| 五月丁香六月综合缴情在线 | 日韩高清亚洲日韩精品一区二区 | 精品熟女少妇av免费久久| 国产精品老熟女露脸视频| 亚洲精品天堂在线观看 | 日本高清在线播放一区二区三区 | 国产线播放免费人成视频播放| 精品人妻系列无码天堂| 久久综合色天天久久综合图片| 罗江县| 亚洲成人午夜排名成人午夜| 国产精品日韩中文字幕| 亚洲国产另类久久久精品网站| 亚洲精品中文字幕一区二| 精品免费看国产一区二区 | 国内精品久久久久影院网站|