题目如下:

解题思路:首先对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 []
        
01-16 07:22