May 2009 - May 2017 论坛八周年-你的足迹,我的骄傲


一亩三分地论坛

 找回密码
 获取更多干活,快来注册

一亩三分地官方iOS手机应用下载
查看: 949|回复: 2
收起左侧

16/08 FB 电面

[复制链接] |试试Instant~ |关注本帖
jerryzhang 发表于 2016-9-22 19:43:00 | 显示全部楼层 |阅读模式

2016(1-3月) 码农类 硕士 全职@Facebook - Other - 在线笔试 |Pass其他

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干活,快来注册

x
直接上题。
给1个时间区间array,每个item是一个会议的开始和结束时间。计算需要的最少会议室数目。
思路:
先sort array,然后建立一个heap,把最先结束的会议放在top。heap里面item的最大数目就是需要的会议室数目。需要考虑的1个边界条件是如果多个会议同时结束,需要把heap pop()一下。-google 1point3acres
C++代码如下:
struct compare{
    bool operator()(const pair<int, int> lp, const pair<int, int> rp){
          return lp.second < rp.second;
    }. 鍥磋鎴戜滑@1point 3 acres
};
/*. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
10a - 10:30a. visit 1point3acres.com for more.
10a - 11a.鏈枃鍘熷垱鑷1point3acres璁哄潧
11a - 12p
1p - 2p.鏈枃鍘熷垱鑷1point3acres璁哄潧
*/

int minMeetingRooms(vector<pair<int, int>> time_intervals){
  priority_queue(pair<int, int>, vector<pair<int,int>>, compare) time_q;
  int ret = 0;
  if(time_intervals.size() == 0) return 0;
  time_q.push(time_intervals[0]);
  for(int i = 1; i < time_intervals.size(); i++){
    pair<int, int> tmp = time_q.top();
    if(time_intervals[i].first >= tmp.second){.鐣欏璁哄潧-涓浜-涓夊垎鍦
        //last room free
        while(time_q.size() > 0){
            tmp = time_q.top();
            if(time_iternals[i].first < tmp.second)  break;. visit 1point3acres.com for more.
            else   time_q.pop();
        }
    }
    time_q.push(time_intervals[i]);
    ret = max(ret, time_q.size());
  }
  return ret;. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
}



评分

1

查看全部评分

Pony_s 发表于 2016-9-23 04:58:18 | 显示全部楼层
关注一亩三分地公众号:
Warald_一亩三分地
厉害,这个做法没见过。
只知道填格子和用hash。

补充内容 (2016-9-23 04:58):. 鍥磋鎴戜滑@1point 3 acres
用hash差不多,不过是空间换时间。
回复 支持 反对

使用道具 举报

 楼主| jerryzhang 发表于 2016-9-23 08:13:17 | 显示全部楼层
关注一亩三分地微博:
Warald
放g没找到hash approach..鐣欏璁哄潧-涓浜-涓夊垎鍦
探讨一下。hash怎么做呀?
回复 支持 反对

使用道具 举报

本版积分规则

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2017-5-26 21:37

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表