252-会议室

252-会议室

力扣252 / lintcode920 / 字节原题 会议室

https://www.lintcode.com/problem/meeting-rooms/description

给定一系列的会议时间间隔,包括起始和结束时间[[s1,e1],[s2,e2],…(si < ei),确定一个人是否可以参加所有会议。

示例1

1
2
3
4
输入: intervals = [(0,30),(5,10),(15,20)]
输出: false
解释:
(0,30), (5,10) 和 (0,30),(15,20) 这两对会议会冲突

示例2

1
2
3
4
输入: intervals = [(5,8),(9,15)]
输出: true
解释:
这两个时间段不会冲突

思路:曾经做过合并区间,用了两种方法,当时提过一定要以代码量少/速度快为前提(这是笔试题),因此一定要按开始时间排序,排序完就简单多了,遍历判断后一个的开始时间是否大于前一个的结束时间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class nine_two_zero_会议室 {

@Test
public void test(){
List<Interval> intervals = new ArrayList<>();
intervals.add(new Interval(5,8));
intervals.add(new Interval(9,20));
boolean res = canAttendMeetings(intervals);
System.out.println(res);
}

public boolean canAttendMeetings(List<Interval> intervals) {
if (intervals == null || intervals.size() == 0){
return true;
}
Collections.sort(intervals, (o1, o2) -> (o1.start - o2.start));
int preEnd = -1;
for (Interval interval : intervals) {
if (interval.start < preEnd){
return false;
}
preEnd = interval.end;
}
return true;
}

public class Interval {
int start, end;
Interval(int start, int end) {
this.start = start;
this.end = end;
}
}
}

其他排序的题目点击这里

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×