zoukankan      html  css  js  c++  java
  • 253. Meeting Rooms II

    https://leetcode.com/problems/meeting-rooms-ii/#/solutions

    Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s2,e2],...] (si < ei), find the minimum number of conference rooms required.

    For example,
    Given [[0, 30],[5, 10],[15, 20]],
    return 2.

    Sol:
     
    Use heap data structure to store the end time of intervals. The length of heap is the number of rooms needed.
     
    If the start time is later than the end time so far, then replace the value in the heap and no room is needed.
     
    Otherwise, a new room is needed, and we achieve it by pushing the end time of the interval into the heap. 
    # Definition for an interval.
    class Interval(object):
        def __init__(self, s=0, e=0):
            self.start = s
            self.end = e
    
    class Solution(object):
        def minMeetingRooms(self, intervals):
            """
            :type intervals: List[Interval]
            :rtype: int
            """
            
            intervals.sort(key = lambda x: x.start)
            # stores the end time of intervals
            heap = []
            for i in intervals:
                if heap and i.start >= heap[0]:
                    # means two intervals can use the same room
                    heapq.heapreplace(heap, i.end)
                else:
                    # a new room is allocated
                    heapq.heappush(heap, i.end)
            return len(heap)

    Note:

    1 heapq.heappop() in python can pop the smallest value in the heap. Here's the demo.

    import heapq

    h = []

    heapq.heappush(h, 5)

    heapq.heappush(h, 2)

    heapq.heappush(h, 8)

    heapq.heappush(h, 4)

    print(heapq.heappop(h))

    print(heapq.heappop(h))

    == >

    2

    4

    2 Data structures are generally based on the ability of a computer to fetch and store data at any place in its memory.

  • 相关阅读:
    最长公共子序列-动态规划
    归并排序
    最大子段和-3种方法
    kafka compaction 分析(基于kafka 0.10.2版本)
    [转载]interp1
    [转]mat2gray函数原理分析
    Java 位运算(移位、位与、或、异或、非)与逻辑运算
    ML01a
    [第1集] 机器学习的动机与应用
    tap4fun公司面试总结
  • 原文地址:https://www.cnblogs.com/prmlab/p/7077199.html
Copyright © 2011-2022 走看看