252. 会议室

287 阅读1分钟

题目: 给定一个会议时间安排的数组 intervals ,每个会议时间都会包括开始和结束的时间 intervals[i] = [starti, endi] ,请你判断一个人是否能够参加这里面的全部会议。

来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/me… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解法:
注意[][]int不能做type alias。满足条件的会议安排为:按会议开始时间排序后,上一个会议的开始时间小于等于当前会议开始时间,并且结束时间小于等于当前会议结束时间

import "sort"
func canAttendMeetings(intervals [][]int) bool {
    // 先排序,然后看区间是否有重叠
    arr := Arr{
        List: intervals,
    }
     sort.Sort(arr)
     for i := 1; i < len(intervals); i ++ {
         if intervals[i - 1][0] <= intervals[i ][0] && intervals[i - 1][1] <= intervals[i ][0] {
             continue
         }
         return false
     }
     return true
}

type Arr struct{
    List [][]int
}
func (a Arr) Len() int{
    return len(a.List)
}
func (a Arr) Less(i, j int) bool{
    return a.List[i][0] < a.List[j][0]
}

func (a Arr) Swap(i, j int) {
     a.List[i], a.List[j] = a.List[j], a.List[i]
}