https://leetcode.com/problems/meeting-rooms/

先ず始めに intervals のスタート時間でソートする。

intervals の時間がソートされたため、 ループで最初の会議の終わりの時間と次の会議の始まりの時間を比較し、 最初の会議の終わりの時間 が 次の会議の始まりの時間より大きい場合、 会議の時間が重なっているので、False を返す。

次の会議の開始時間 が 前の会議の終わり時間より小さい場合ループを続ける。

ループする際、次のリストと比較するため for の range で -1 をする。

ソートをするので Time complexity は O(n log n) となる。

Time complexity: O(n log n) Mem complexity: O(1)

class Solution(object):
    def canAttendMeetings(self, intervals):
        """
        :type intervals: List[List[int]]
        :rtype: bool
        """
        intervals.sort()
        for i in range(len(intervals) -1):
            if intervals[i][1] > intervals[i + 1][0]:
                return False
            return True