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


一亩三分地论坛

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

一亩三分地官方iOS手机应用下载
查看: 976|回复: 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()一下。
C++代码如下:. from: 1point3acres.com/bbs
struct compare{
    bool operator()(const pair<int, int> lp, const pair<int, int> rp){
          return lp.second < rp.second;
    }
};. more info on 1point3acres.com
/*
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-google 1point3acres
        while(time_q.size() > 0){. 1point 3acres 璁哄潧
            tmp = time_q.top();
            if(time_iternals[i].first < tmp.second)  break;. 鍥磋鎴戜滑@1point 3 acres
            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。. 1point 3acres 璁哄潧

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

使用道具 举报

 楼主| jerryzhang 发表于 2016-9-23 08:13:17 | 显示全部楼层
关注一亩三分地微博:
Warald
放g没找到hash approach.. Waral 鍗氬鏈夋洿澶氭枃绔,
探讨一下。hash怎么做呀?
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

custom counter

GMT+8, 2017-7-27 14:59

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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