zoukankan      html  css  js  c++  java
  • 【Leetcode】堆系列

    【Leetcode-253】

    一、题目:会议室2

      给你一个会议时间安排的数组 intervals ,每个会议时间都会包括开始和结束的时间 intervals[i] = [starti, endi] ,为避免会议冲突,同时要考虑充分利用会议室资源,请你计算至少需要多少间会议室,才能满足这些会议安排。

    二、代码:

    def minMeetingRooms(self, intervals: List[List[int]]) -> int:
            """
            思路:对开始时间排序,对每一项,找是否有空闲房间,没有的话开一个。用结束时间的最小堆找是否冲突,如果不冲突把房间结束时间替换掉,否则加入。即,假设每次会议都要新开房间,但与最早结束时间不冲突时可以抢占原来的房间。
            """
            intervals.sort(key=lambda x: x[0])
            heap = []
            heapq.heappush(heap, intervals[0][1])
            for item in intervals[1:]:
                if heap[0] <= item[0]:  # 不冲突
                    heapq.heappop(heap)
                heapq.heappush(heap, item[1])
            return len(heap)
    博文转载请注明出处。
  • 相关阅读:
    ST表学习笔记
    LCA学习笔记
    $ZOJ 2432 Greatest Common Increasing Subsequence$
    $SP15637 GNYR04H - Mr Youngs Picture Permutations$
    Noip2016换教室
    洛谷4718【模板】Pollard-Rho算法
    CQOI2016 密钥破解
    Poj3696 The Lukiest Number
    Noip2012同余方程
    同余
  • 原文地址:https://www.cnblogs.com/EstherLjy/p/14608673.html
Copyright © 2011-2022 走看看