题目如下:
解题思路:首先对slots1和slots2分别按start排好序。接下来分别从slots1和slots2中取第一个元素,判断两个元素是否满足会议,如果不满足,则从end较小的元素对应的slots中取后一个元素。以此类推,直到找出符合条件的slot为止。
代码如下:
class Solution(object): def minAvailableDuration(self, slots1, slots2, duration): """ :type slots1: List[List[int]] :type slots2: List[List[int]] :type duration: int :rtype: List[int] """ def cmpf(v1,v2): return v1[0] - v2[0] slots1.sort(cmp=cmpf) slots2.sort(cmp=cmpf) inx1 = inx2 = 0 while inx1 < len(slots1) and inx2 < len(slots2): item1 = slots1[inx1] item2 = slots2[inx2] if item1[0] > item2[1]: inx2 += 1 elif item1[1] < item2[0]: inx1 += 1 else: ms = max(item1[0],item2[0]) me = min(item1[1],item2[1]) if me - ms >= duration: return [ms,ms+duration] if item1[1] < item2[1]: inx1 += 1 else: inx2 += 1 return []