题解 | #主持人调度(二)#

主持人调度(二)

https://www.nowcoder.com/practice/4edf6e6d01554870a12f218c94e8a299

参考高赞回答,捋一下自己的思路:首先,如果所有活动都没有冲突,那么一个主持人就搞定了。如果有冲突,那么在某个时刻有不止一个活动在进行中,此时需要多个主持人。在某个时刻,同时进行的活动数目达到最大的时候,此时的主持人数目即为需要的最少的数目。

class Solution:
    def minmumNumberOfHost(self , n: int, startEnd: List[List[int]]) -> int:
        starts,ends=[],[]
        # 将所有活动开始和结束的时间点分别记录下来
        for act in startEnd:
            starts.append(act[0])
            ends.append(act[1])
        # 升序排列
        starts.sort()
        ends.sort()
        # i代表当前时刻(含)已经开始的活动数目,j代表截止当前时刻(含)已经结束的活动数目
        i,j,holderNum=0,0,0
        for startTime in starts:            # 遍历所有开始时间点
            i+=1                            # 已开始的活动数+1
            while(ends[j]<=startTime):      # 截止目前已经结束的活动数目
                j+=1
            holderNum=max(holderNum,i-j)    # 两者的差即为当前正在进行的活动数,维护一个最大值
            
        return holderNum
全部评论

相关推荐

04-28 22:33
已编辑
门头沟学院 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务