您的位置:首页 > 职场人生

[Facebook 面试题]Meeting roomII 变形题

2016-03-24 14:39 483 查看
facebook 二面题目:

interval [startTime, stoptime)   ----integral  time stamps

给这样的一串区间 I1, I2......In  

找出 一个 time stamp  出现在interval的次数最多。

startTime <= t< stopTime 代表这个数在区间里面出现过。

example:  [1,3),  [2, 7),   [4,  8),   [5, 9)

5和6各出现了三次, 所以答案返回5,6。

class Solution {
public:
vector<int> findTimeStamp(vector<pair<int,int>>& intervals) {
vector<int> res;
int len=intervals.size();
if(len==0) return res;
vector<int> start(len);
vector<int> end(len);
for(pair<int,int> interval:intervals) {
start.push_back(interval.first);
end.push_back(interval.second-1);
}
sort(start.begin(),start.end());
sort(end.begin(),end.end());
int available=0;
int sIndex=1,eIndex=0;
int ss=start[0],ee=end[0];
while(sIndex<len&&eIndex<len) {
while(start[index]>=end[eIndex]) {
available++;
eIndex++;
}
if(start[sIndex]<end[eIndex]) {
if(available<=0) {
ss=start[sIndex]; //记录起点和终点
ee=end[eIndex];
}
else {
available--;
}
}
sIndex++;
}
for(int i=ss;i<=ee;i++) {
res.push_back(i);
}
return res;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ leetcode