P238 能否参加所有会议
算法 25 阅读
信号摘要
难度:Easy · 时长:05:21 · leetcode 252 · lintcode 920
未对外公开播放权限
点击查看说明
描述
这个题目说的是,给你一系列的会议时间区间,每个时间区间由开始时间和结束时间构成。你要判断出同一个人是否可以参加所有会议。
比如说,给你两个时间区间:[2, 4] [4, 6]
这两个时间区间没有重叠,因此所有会议都能参加,返回 true。
如果再增加一个会议,得到三个时间区间:
[2, 4] [4, 6] [1, 3]
由于 [1, 3] 和 [2, 4] 在时间上有重叠,因此同一个人不可能参加所有会议,返回 false。
相关视频:区间合并
代码
public class AlgoCasts {
public class Interval {
int start;
int end;
Interval(int s, int e) { start = s; end = e; }
}
// Time: O(n*log(n)), Space: O(1)
public boolean canAttendMeetings(List<Interval> intervals) {
intervals.sort((a, b) -> a.start - b.start);
for (int i = 0; i < intervals.size()-1; ++i)
if (intervals.get(i).end > intervals.get(i+1).start)
return false;
return true;
}
}