当前位置:   article > 正文

LeetCode-Python-253. 会议室 II_python给定一个会议时间安排的 2 维数组 meetings,每个会议时间都会包括开始和结

python给定一个会议时间安排的 2 维数组 meetings,每个会议时间都会包括开始和结

给定一个会议时间安排的数组,每个会议时间都会包括开始和结束的时间 [[s1,e1],[s2,e2],...] (si < ei),为避免会议冲突,同时要考虑充分利用会议室资源,请你计算至少需要多少间会议室,才能满足这些会议安排。

示例 1:

输入: [[0, 30],[5, 10],[15, 20]]
输出: 2
示例 2:

输入: [[7,10],[2,4]]
输出: 1

来源:力扣(LeetCode
链接:https://leetcode-cn.com/problems/meeting-rooms-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

第一种思路:

根据输入的intervals数组,我希望能知道每个时刻 i 需要用多少个会议室 record[i],这样我返回所需的最大值即可,

这道题类似于作区间加法,在开会的时候区间内加一,所以利用前缀和数组来计算。

对于每个interval,将它开始的时刻 record[begin] + 1, 结束的时刻 record[end] - 1,

然后利用前缀和计算整个区间。

本题类似LeetCode-Python-1094. 拼车, LeetCode-Python-370. 区间加法

  1. class Solution(object):
  2. def minMeetingRooms(self, intervals):
  3. """
  4. :type intervals: List[List[int]]
  5. :rtype: int
  6. """
  7. if not intervals:
  8. return 0
  9. if not intervals[0]:
  10. return 1
  11. intervals = sorted(intervals, key = lambda x: x[1])
  12. record = [0 for _ in range(intervals[-1][1] + 1)]
  13. for interval in intervals:
  14. # print record
  15. begin, end = interval[0], interval[1]
  16. record[begin] += 1
  17. record[end] -= 1
  18. for i, x in enumerate(record):
  19. if i > 0:
  20. record[i] += record[i - 1]
  21. return max(record)

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/182176
推荐阅读
相关标签
  

闽ICP备14008679号