[LeetCode 253] Meeting Rooms II 扫描线的应用(Python)

本文通过Python实现LeetCode 253题,利用扫描线算法解决最小会议室数量问题。通过标记起始和结束点,排序后遍历,动态更新最大会议室需求。
摘要由CSDN通过智能技术生成

扫描线的思想很巧妙,适用于一些一维算法问题的解决。这些问题涉及具有头尾节点的排序问题,单纯的对节点排序并不能很好的解决问题。扫描线应用的简单例子如LeetCode 253

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.

将这三个区间在x轴上画出来,并用一条垂直于x轴的线作为扫描线从左至右扫描,会很容易得出答案,即与扫描线焦点的最大值即为所求。但是在程序中我们怎样表示这种思想呢?
-对所有点进行标记,区分起始点和终止点
-对所有点进行排序
-依次遍历每个点,遇到起始点+1,遇到终止点-1,并更新记录最大值

代码如下

# Definition for an interval.
# class Interval(object):
#     def __init__(self, s=0, e=0):
#         se
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值