题目:
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
.
按start排序,然后比较前一个的end和后一个的start。
C++版:
/** * Definition for an interval. * struct Interval { * int start; * int end; * Interval() : start(0), end(0) {} * Interval(int s, int e) : start(s), end(e) {} * }; */ class Solution { public: bool canAttendMeetings(vector<Interval>& intervals) { sort(intervals.begin(), intervals.end(), compare); for(int i = 1; i < intervals.size(); i++) { if(intervals[i - 1].end > intervals[i].start) return false; } return true; } static bool compare(Interval a, Interval b) { return a.start < b.start; } };
/** * Definition for an interval. * public class Interval { * int start; * int end; * Interval() { start = 0; end = 0; } * Interval(int s, int e) { start = s; end = e; } * } */ import java.util.Arrays; public class Solution { public boolean canAttendMeetings(Interval[] intervals) { Arrays.sort(intervals, new IntervalComparator()); for(int i = 1; i < intervals.length; i++) { if(intervals[i - 1].end > intervals[i].start) return false; } return true; } } class IntervalComparator implements Comparator<Interval> { public int compare(Interval a, Interval b) { return a.start - b.start; } }
# 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 """ intervals.sort(lambda a, b : a.start - b.start) for i in range(1, len(intervals)): if intervals[i - 1].end > intervals[i].start: return False return True