题解 | 活动安排

活动安排

https://www.nowcoder.com/practice/16d971e9e42e4f3b9b1e2b8794796a43

n = int(input())
a = [list(map(int, input().split())) for _ in range(n)] #获取区间列表
a.sort(key=lambda x: (x[0], x[1])) #将区间先按照区间开头从大到小排序,再按照区间结尾从大到小排序
stack = [] #用来放选择的区间
for r in a: #r是排序后a中的区间
    if not stack: #如果stack为空
        stack.append(r) #把区间r加入进stack中
    else: #stack不为空
        if r[0] >= stack[-1][1]: #如果当前区间r的开头在stack最后的区间的后面
            stack.append(r) #把区间r加入stack中
        if r[0] >= stack[-1][0] and r[1] <= stack[-1][1]: #如果当前区间r是stack末尾区间的子集
            stack[-1] = r #把stack的末尾区间替换为当前区间r
print(len(stack)) #输出选中区间的数量

全部评论

相关推荐

asdasdasda...:19岁,不容易啊可能升个本会好点,现在学历歧视太严重了
点赞 评论 收藏
分享
仁者伍敌:难怪小公司那么挑剔,让你们这些大佬把位置拿了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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