自学内容网 自学内容网

Leetcode尊享面试100题-252.会议室

给定一个会议时间安排的数组 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;
    }
}


原文地址:https://blog.csdn.net/Chang_Yafei/article/details/142499096

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!