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