给定一个会议时间安排的数组 intervals
,每个会议时间都会包括开始和结束的时间 intervals[i] = [starti, endi]
,请你判断一个人是否能够参加这里面的全部会议。
示例 1:
输入:intervals = [[0,30],[5,10],[15,20]] 输出:false
示例 2:
输入:intervals = [[7,10],[2,4]] 输出:true
提示:
0 <= intervals.length <= 104
intervals[i].length == 2
0 <= starti < endi <= 106
这个系列是会员题,题目很简单,直接上代码,看不懂的直接私信或者评论,看到后第一时间解答
class Solution {
/**这个题我理解就是看看这些区间有没有交集,相对比较简单 */
public boolean canAttendMeetings(int[][] intervals) {
/**如果没有会议或者只有一个1会议,那就可以参加啊 */
if(intervals == null || intervals.length < 2) {
return true;
}
/**先排个序,按照开始时间早的排前面,开始时间一样的结束时间早的排前面 */
Arrays.sort(intervals, (a,b)->a[0]==b[0]? a[1] - b[1] : a[0] - b[0]);
/**用一个变量lastMeetingEnd用来记录上个会议结束的时间 */
int lastMeetingEnd = intervals[0][1];
for(int i = 1; i < intervals.length; i++) {
/**如果当前会议开始时间小于上个会议的结束时间就参加不了当前会议 */
if(lastMeetingEnd > intervals[i][0]) {
return false;
}
/**能参加当前会议,就看看当前会议时间是不是大于下个会议的开始时间(下次循环处理,这里先设置lastMeetingEnd) */
lastMeetingEnd = intervals[i][1];
}
return true;
}
}