由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 问一道FB 的电面题
相关主题
facebook面经请教一道interval的题目
JAVA里sort的algorithm time complexity是多少g phone interv--有没有o(n) 解法
新鲜G面筋(2)请教亚麻一道onsite面试题
刷了半天题G电面的一个题
G家一面。Probability quesiton
最近找工的一点总结问个算法题, 关于区间 overlap的
leetcode longest consecutive sequence怎么做FB interview question
问个题目,找不在区间内的所有数Interval tree解法
相关话题的讨论汇总
话题: interval话题: int话题: intervals话题: start话题: return
进入JobHunting版参与讨论
1 (共1页)
s*********p
发帖数: 130
1
一道FB家面试题,不是很理解
Given n intervals [si, fi], find the maximum number of overlapping intervals
.
比如如果是 [1, 2] [2, 10], [3,4], 按照Leetcode 那道merge interval 的思路的解
法就应该结果是3, 因为 [1,2] [3,4] 都与[2,10] overlap. 这是我写的代码:
public class Solution {
public int maxIntervals(List intervals) {
if (intervals == null || intervals.size() == 0) {
return 0;
}

if (intervals.size() == 1) {
return 1;
}

int count = 1;
int max = 1;

// Sort the intervals based on start
Collections.sort(intervals, new IntervalComparator());

Interval prev = intervals.get(0);

for (int i = 1; i < intervals.size(); i++) {
Interval curr = intervals.get(i);
if (curr.start <= prev.end) {
int left = Math.min(curr.start, prev.start);
int right = Math.max(curr.end, prev.end);
prev = new Interval(left, right);

count++;
max = Math.max(count, max);
} else {
prev = curr;
count = 1;
}
}
return max;
}

private class IntervalComparator implements Comparator {
public int compare(Interval a, Interval b) {
return a.start - b.start;
}
}
}
但是,另外一个解释是答案应该为2, 因为 [1,2] [3,4] 其实并不overlap.
版上有人见过这个题吗?到底应该怎么理解呢?
y******0
发帖数: 93
2
做题的时候,不光要想题,还要想找个题和现实生活中的实际问题有什么意义。
这个题目的现实意义是如果有一堆会议让你安排,最少需要多少会议室。
所以[1,2]和[3,4]在这个意义上说就不是overlap了。
当然你可以和面试官double check。

intervals

【在 s*********p 的大作中提到】
: 一道FB家面试题,不是很理解
: Given n intervals [si, fi], find the maximum number of overlapping intervals
: .
: 比如如果是 [1, 2] [2, 10], [3,4], 按照Leetcode 那道merge interval 的思路的解
: 法就应该结果是3, 因为 [1,2] [3,4] 都与[2,10] overlap. 这是我写的代码:
: public class Solution {
: public int maxIntervals(List intervals) {
: if (intervals == null || intervals.size() == 0) {
: return 0;
: }

s*********p
发帖数: 130
3
多谢大牛的指点,小弟学习了!!
大牛能不能给个思路这题怎么做

做题的时候,不光要想题,还要想找个题和现实生活中的实际问题有什么意义。这个题
目的现实意义是如果有一堆会议让你安排,最少需要多少会议室。所以[1,2]和[3,4]
在这个意义上说就........

【在 y******0 的大作中提到】
: 做题的时候,不光要想题,还要想找个题和现实生活中的实际问题有什么意义。
: 这个题目的现实意义是如果有一堆会议让你安排,最少需要多少会议室。
: 所以[1,2]和[3,4]在这个意义上说就不是overlap了。
: 当然你可以和面试官double check。
:
: intervals

l****i
发帖数: 2772
4
这题和“一堆会议的start和end,问最少需要多少会议室”,一样。所有时间排序到一
起,线性走一遍,遇到start +1,end -1. 走的过程中得最大值就是解。

4]

【在 s*********p 的大作中提到】
: 多谢大牛的指点,小弟学习了!!
: 大牛能不能给个思路这题怎么做
:
: 做题的时候,不光要想题,还要想找个题和现实生活中的实际问题有什么意义。这个题
: 目的现实意义是如果有一堆会议让你安排,最少需要多少会议室。所以[1,2]和[3,4]
: 在这个意义上说就........

y******0
发帖数: 93
5
是的,只要几行代码:

【在 l****i 的大作中提到】
: 这题和“一堆会议的start和end,问最少需要多少会议室”,一样。所有时间排序到一
: 起,线性走一遍,遇到start +1,end -1. 走的过程中得最大值就是解。
:
: 4]

q*****l
发帖数: 124
6
还有道类似的题
Given a set of n jobs with [start time, end time, cost] find a subset so
that no 2 jobs overlap and the cost is maximum ?
貌似用DP可解
s*********p
发帖数: 130
7
一道FB家面试题,不是很理解
Given n intervals [si, fi], find the maximum number of overlapping intervals
.
比如如果是 [1, 2] [2, 10], [3,4], 按照Leetcode 那道merge interval 的思路的解
法就应该结果是3, 因为 [1,2] [3,4] 都与[2,10] overlap. 这是我写的代码:
public class Solution {
public int maxIntervals(List intervals) {
if (intervals == null || intervals.size() == 0) {
return 0;
}

if (intervals.size() == 1) {
return 1;
}

int count = 1;
int max = 1;

// Sort the intervals based on start
Collections.sort(intervals, new IntervalComparator());

Interval prev = intervals.get(0);

for (int i = 1; i < intervals.size(); i++) {
Interval curr = intervals.get(i);
if (curr.start <= prev.end) {
int left = Math.min(curr.start, prev.start);
int right = Math.max(curr.end, prev.end);
prev = new Interval(left, right);

count++;
max = Math.max(count, max);
} else {
prev = curr;
count = 1;
}
}
return max;
}

private class IntervalComparator implements Comparator {
public int compare(Interval a, Interval b) {
return a.start - b.start;
}
}
}
但是,另外一个解释是答案应该为2, 因为 [1,2] [3,4] 其实并不overlap.
版上有人见过这个题吗?到底应该怎么理解呢?
y******0
发帖数: 93
8
做题的时候,不光要想题,还要想找个题和现实生活中的实际问题有什么意义。
这个题目的现实意义是如果有一堆会议让你安排,最少需要多少会议室。
所以[1,2]和[3,4]在这个意义上说就不是overlap了。
当然你可以和面试官double check。

intervals

【在 s*********p 的大作中提到】
: 一道FB家面试题,不是很理解
: Given n intervals [si, fi], find the maximum number of overlapping intervals
: .
: 比如如果是 [1, 2] [2, 10], [3,4], 按照Leetcode 那道merge interval 的思路的解
: 法就应该结果是3, 因为 [1,2] [3,4] 都与[2,10] overlap. 这是我写的代码:
: public class Solution {
: public int maxIntervals(List intervals) {
: if (intervals == null || intervals.size() == 0) {
: return 0;
: }

s*********p
发帖数: 130
9
多谢大牛的指点,小弟学习了!!
大牛能不能给个思路这题怎么做

做题的时候,不光要想题,还要想找个题和现实生活中的实际问题有什么意义。这个题
目的现实意义是如果有一堆会议让你安排,最少需要多少会议室。所以[1,2]和[3,4]
在这个意义上说就........

【在 y******0 的大作中提到】
: 做题的时候,不光要想题,还要想找个题和现实生活中的实际问题有什么意义。
: 这个题目的现实意义是如果有一堆会议让你安排,最少需要多少会议室。
: 所以[1,2]和[3,4]在这个意义上说就不是overlap了。
: 当然你可以和面试官double check。
:
: intervals

l****i
发帖数: 2772
10
这题和“一堆会议的start和end,问最少需要多少会议室”,一样。所有时间排序到一
起,线性走一遍,遇到start +1,end -1. 走的过程中得最大值就是解。

4]

【在 s*********p 的大作中提到】
: 多谢大牛的指点,小弟学习了!!
: 大牛能不能给个思路这题怎么做
:
: 做题的时候,不光要想题,还要想找个题和现实生活中的实际问题有什么意义。这个题
: 目的现实意义是如果有一堆会议让你安排,最少需要多少会议室。所以[1,2]和[3,4]
: 在这个意义上说就........

相关主题
最近找工的一点总结请教一道interval的题目
leetcode longest consecutive sequence怎么做g phone interv--有没有o(n) 解法
问个题目,找不在区间内的所有数请教亚麻一道onsite面试题
进入JobHunting版参与讨论
y******0
发帖数: 93
11
是的,只要几行代码:

【在 l****i 的大作中提到】
: 这题和“一堆会议的start和end,问最少需要多少会议室”,一样。所有时间排序到一
: 起,线性走一遍,遇到start +1,end -1. 走的过程中得最大值就是解。
:
: 4]

q*****l
发帖数: 124
12
还有道类似的题
Given a set of n jobs with [start time, end time, cost] find a subset so
that no 2 jobs overlap and the cost is maximum ?
貌似用DP可解
s*********p
发帖数: 130
13

这题这么写可以吗?
分别把start array and end array排序,然后线性向下扫。
但是加入输入不把start 和 end 分开,而是向leetcode 那样建一个Interval class,
怎么保证start 和 end都有序呢?
public class Solution {
public int numOverLaps(List start, List end) {
if (start == null || start.size() == 0 || end == null || end.size()
== 0) {
return 0;
}

if (start.size() != end.size()) {
return 0;
}

Collections.sort(start);
Collections.sort(end);

int startP = 0;
int endP = 0;

int numActive = 0;
int numOverlap = 0;

while (startP < start.size() && endP < end.size()) {
if (start.get(startP) < end.get(endP)) {
numActive++;
numOverlap = Math.max(numOverlap, numActive);
startP++;
} else {
numActive--;
endP++;
}
}
return numOverlap;
}
public static void main(String[] args) {
Solution sol = new Solution();
List start = new ArrayList();
List end = new ArrayList();
start.add(1);
start.add(2);
start.add(5);
start.add(4);
end.add(3);
end.add(4);
end.add(6);
end.add(7);
int result = sol.numOverLaps(start, end);
System.out.println("Result is " + result);
}
}

【在 l****i 的大作中提到】
: 这题和“一堆会议的start和end,问最少需要多少会议室”,一样。所有时间排序到一
: 起,线性走一遍,遇到start +1,end -1. 走的过程中得最大值就是解。
:
: 4]

f***b
发帖数: 21
14
看来是常见题啊
板上之前看过一个题也是这个
Given a array of pairs where each pair contains the start and
end time of a meeting (as in int),
Determine if a single person can attend all the meetings
Input array(pair(1,4), pair(4, 5), pair(3,4), pair(2,3))
Output: false
Follow up:
determine the minimum number of meeting rooms needed to hold all the
meetings.
Input array(pair(1, 4), pair(2,3), pair(3,4), pair(4,5))
Output: 2
f**********t
发帖数: 1001
15
int needRooms(vector> &meetings) {
struct Cmp {
bool operator()(const tuple &x, const tuple &y) {
return get<0>(x) < get<0>(y);
}
};
vector> vt;
for (auto meeting : meetings) {
vt.push_back(make_tuple(get<0>(meeting), true));
vt.push_back(make_tuple(get<1>(meeting), false));
}
sort(vt.begin(), vt.end(), Cmp());
int res = 0;
int pretime = -1;
int start = 0;
int end = 0;
int rooms = 0;
for (auto t : vt) {
if (pretime != get<0>(t)) {
rooms += start - end;
res = max(res, rooms);
start = 0;
end = 0;
pretime = get<0>(t);
}
if (get<1>(t) == true) {
++start;
} else {
++end;
}
}
rooms += start - end;
res = max(res, rooms);
return res;
}
d****n
发帖数: 233
16
A similar problem :
http://www.geeksforgeeks.org/minimum-number-platforms-required-

【在 y******0 的大作中提到】
: 做题的时候,不光要想题,还要想找个题和现实生活中的实际问题有什么意义。
: 这个题目的现实意义是如果有一堆会议让你安排,最少需要多少会议室。
: 所以[1,2]和[3,4]在这个意义上说就不是overlap了。
: 当然你可以和面试官double check。
:
: intervals

1 (共1页)
进入JobHunting版参与讨论
相关主题
Interval tree解法G家一面。
问个Facebook 电面题最近找工的一点总结
leetcode 这题insert interval怎么做?leetcode longest consecutive sequence怎么做
leetcode的online judge runtime error是指什么?问个题目,找不在区间内的所有数
facebook面经请教一道interval的题目
JAVA里sort的algorithm time complexity是多少g phone interv--有没有o(n) 解法
新鲜G面筋(2)请教亚麻一道onsite面试题
刷了半天题G电面的一个题
相关话题的讨论汇总
话题: interval话题: int话题: intervals话题: start话题: return