一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 694|回复: 2
收起左侧

16/08 FB 电面

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

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

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

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
直接上题。
给1个时间区间array,每个item是一个会议的开始和结束时间。计算需要的最少会议室数目。
思路:
先sort array,然后建立一个heap,把最先结束的会议放在top。heap里面item的最大数目就是需要的会议室数目。需要考虑的1个边界条件是如果多个会议同时结束,需要把heap pop()一下。.鐣欏璁哄潧-涓浜-涓夊垎鍦
C++代码如下:. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
struct compare{
    bool operator()(const pair<int, int> lp, const pair<int, int> rp){. From 1point 3acres bbs
          return lp.second < rp.second;
    }
};
/*
10a - 10:30a
10a - 11a
11a - 12p
1p - 2p
*/

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();. visit 1point3acres.com for more.
            if(time_iternals[i].first < tmp.second)  break;
            else   time_q.pop();.鏈枃鍘熷垱鑷1point3acres璁哄潧
        }
    }
    time_q.push(time_intervals[i]);
. From 1point 3acres bbs    ret = max(ret, time_q.size());
  }
  return ret;. more info on 1point3acres.com
}

. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷

评分

1

查看全部评分

Pony_s 发表于 2016-9-23 04:58:18 | 显示全部楼层
厉害,这个做法没见过。
只知道填格子和用hash。-google 1point3acres

补充内容 (2016-9-23 04:58):
用hash差不多,不过是空间换时间。
回复 支持 反对

使用道具 举报

 楼主| jerryzhang 发表于 2016-9-23 08:13:17 | 显示全部楼层
放g没找到hash approach.
探讨一下。hash怎么做呀?
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

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

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

custom counter

GMT+8, 2016-12-7 21:26

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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