给定一个会议时间安排的数组,每个会议时间都会包括开始和结束的时间 [[s1,e1],[s2,e2],[s3,e3]...] (s < e),请你判断一个人是否能够参加这里面的全部会议
输入:[[0,30],[5,10],[15,20]]
输出:false
输入:[[7,10],[2,4]]
输出:true
思路: 假如把会议开始时间做一个排序,然后遍历对比当前会议开始时间 和 前一个会议结束时间 就可以得出结论
public boolean canAttendMeetings(int[][] intervals) {
//全部都能参加,因为根本什么都不需要做
if(intervals == null || intervals.length == 0) return true;
//(m1,m2) -> (m1[0] - m2[0]) 这个表达式就表示 从小到大升序排列
Arrays.sort(intervals,(m1,m2) -> m1[0] - m2[0]);
for(int i = 1;i < intervals.length; i++) {
//当前会议的开始时间 小于 前一个会议的结束时间说明 有重叠
if(intervals[i][0] < intervals[i-1][1]) return false;
}
return true;
}
网友评论