• 【leetcode】1229.Meeting Scheduler


    题目如下:

    你是一名行政助理,手里有两位客户的空闲时间表:slots1 和 slots2,以及会议的预计持续时间 duration,请你为他们安排合适的会议时间。

    「会议时间」是两位客户都有空参加,并且持续时间能够满足预计时间 duration 的 最早的时间间隔。

    如果没有满足要求的会议时间,就请返回一个 空数组。

    「空闲时间」的格式是 [start, end],由开始时间 start 和结束时间 end 组成,表示从 start 开始,到 end 结束。

    题目保证数据有效:同一个人的空闲时间不会出现交叠的情况,也就是说,对于同一个人的两个空闲时间 [start1, end1] 和 [start2, end2],要么 start1 > end2,要么 start2 > end1。

    解题思路:首先对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 []
            
  • 相关阅读:
    安装express 新建项目遇到问题汇总
    Java IO
    python3基础之“函数(1)”
    python3基础之“小练习(3)”
    python3基础之“小练习(2)”
    python3基础之“小练习(1)”
    linux命令
    1.环境安装部署汇总
    阶段13-直播~
    docker环境问题
  • 原文地址:https://www.cnblogs.com/seyjs/p/11713518.html
Copyright © 2020-2023  润新知