https://leetcode.com/problems/meeting-rooms/
252. Meeting Rooms
- Total Accepted: 19160
- Total Submissions: 43021
- Difficulty: Easy
- Contributors: Admin
Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s2,e2],...] (si < ei), determine if a person could attend all meetings.
For example,
Given [[0, 30],[5, 10],[15, 20]],
return false.
Code
# Definition for an interval.
# class Interval(object):
# def __init__(self, s=0, e=0):
# self.start = s
# self.end = e
class Solution(object):
def canAttendMeetings(self, intervals):
"""
:type intervals: List[Interval]
:rtype: bool
"""
if not intervals or len(intervals) == 1:
return True
intervals = sorted(intervals, key=lambda x: x.start)
for i in xrange(1, len(intervals)):
if intervals[i].start < intervals[i-1].end:
return False
return True
Idea
You have to sort first which takes O(nlogn) time.
You can also look at the similar problem: https//nb4799.neu.edu/wordpress/?p=2205