推荐:数据科学课程和书籍清单以及培训讲座


一亩三分地论坛

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

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

16/08 FB 电面

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

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

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

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

x
直接上题。
给1个时间区间array,每个item是一个会议的开始和结束时间。计算需要的最少会议室数目。
. more info on 1point3acres.com思路:. 1point3acres.com/bbs
先sort array,然后建立一个heap,把最先结束的会议放在top。heap里面item的最大数目就是需要的会议室数目。需要考虑的1个边界条件是如果多个会议同时结束,需要把heap pop()一下。
C++代码如下:
struct compare{
    bool operator()(const pair<int, int> lp, const pair<int, int> rp){ 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
          return lp.second < rp.second; . 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
    }
};
/*
10a - 10:30a 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
10a - 11a
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;
            else   time_q.pop();. visit 1point3acres.com for more.
        }
    }
    time_q.push(time_intervals[i]);
    ret = max(ret, time_q.size());
. Waral 鍗氬鏈夋洿澶氭枃绔,  }
  return ret;
}



评分

1

查看全部评分

Pony_s 发表于 2016-9-23 04:58:18 | 显示全部楼层
关注一亩三分地公众号:
Warald_一亩三分地
厉害,这个做法没见过。
只知道填格子和用hash。
. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
补充内容 (2016-9-23 04:58):
用hash差不多,不过是空间换时间。
回复 支持 反对

使用道具 举报

 楼主| jerryzhang 发表于 2016-9-23 08:13:17 | 显示全部楼层
关注一亩三分地微博:
Warald
放g没找到hash approach.
. 1point3acres.com/bbs探讨一下。hash怎么做呀?
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2017-8-17 01:36

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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