员工空闲时间

Submission

运行时间: 55 ms

内存: 17.5 MB

"""
# Definition for an Interval.
class Interval:
    def __init__(self, start: int = None, end: int = None):
        self.start = start
        self.end = end
"""

class Solution:
    def employeeFreeTime(self, schedule: '[[Interval]]') -> '[Interval]':
        temp = []
        for interval in schedule:
            for inter in interval:
                temp.append(inter)
        temp.sort(key=lambda x: x.start)
        
        res = []
        pre_end = temp[0].end
        for i in range(1, len(temp)):
            if temp[i].end <= pre_end:
                continue
            if temp[i].start > pre_end:
                res.append(Interval(pre_end, temp[i].start))
            pre_end = temp[i].end
                
                
        return res

Explain

这个题解的思路首先是将所有员工的时间间隔收集到一个列表中,然后根据每个时间间隔的开始时间将这个列表排序。排序后,它遍历排序好的时间间隔列表,比较当前时间间隔的开始时间与前一个时间间隔的结束时间,以确定两者之间是否存在空闲时间。如果存在空闲时间(即当前时间间隔的开始时间大于前一个时间间隔的结束时间),则创建一个新的时间间隔来表示这段空闲时间,并将其添加到结果列表中。遍历结束后,返回包含所有空闲时间的列表。

时间复杂度: O(n log n)

空间复杂度: O(n)

“”“
# Definition for an Interval.
class Interval:
    def __init__(self, start: int = None, end: int = None):
        self.start = start
        self.end = end
”“”

class Solution:
    def employeeFreeTime(self, schedule: '[[Interval]]') -> '[Interval]':
        # 创建一个临时列表存储所有时间间隔
        temp = []
        for interval in schedule:
            for inter in interval:
                temp.append(inter)
        # 根据每个时间间隔的起始时间进行排序
        temp.sort(key=lambda x: x.start)
        
        # 初始化结果列表和前一个时间间隔的结束时间
        res = []
        pre_end = temp[0].end
        # 遍历排序后的时间间隔列表
        for i in range(1, len(temp)):
            # 如果当前时间间隔的结束时间小于等于前一个的结束时间,跳过
            if temp[i].end <= pre_end:
                continue
            # 如果当前时间间隔的开始时间大于前一个的结束时间,说明有空闲,添加到结果列表
            if temp[i].start > pre_end:
                res.append(Interval(pre_end, temp[i].start))
            # 更新前一个时间间隔的结束时间
            pre_end = temp[i].end
                
        # 返回包含所有空闲时间的列表
        return res
“”“