2024华为OD机试真题-会议室占用时间-(C++/Python)-C卷D卷-100分

 2024华为OD机试题库-(C卷+D卷)-(JAVA、Python、C++)  

题目描述

现有若干个会议,所有会议共享一个会议室,用数组表示各个会议的开始时间和结束时间,格式为:

[[会议1开始时间, 会议1结束时间], [会议2开始时间, 会议2结束时间]]

请计算会议室占用时间段。

输入描述

第一行输入一个整数 n,表示会议数量

之后输入n行,每行两个整数,以空格分隔,分别表示会议开始时间,会议结束时间

输出描述

输出多行,每个两个整数,以空格分隔,分别表示会议室占用时间段开始和结束

备注

  • 会议室个数范围:[1, 100]
  • 会议室时间段:[1, 24]

用例1

输入

4

1 4

2 5

7 9

14 18

输出

1 5

7 9

14 18

说明

输入:[[1,4],[2,5],[7,9],[14,18]]

输出:[[1,5],[7,9],[14,18]]

说明:时间段[1,4]和[2,5]重叠,合并为[1,5]

用例2

输入

2

1 4

4 5

输出

1 5

说明

输入:[[1,4],[4,5]]

输出:[[1,5]]

说明:时间段[1,4]和[4,5]连续

考点

区间合并

题目解析

本题实际考试时为核心代码模式,非ACM模式,即无需处理输入输出。

本代码实现仍然以ACM模式处理,但是会将 "输入输出处理" 与 "核心代码" 分开,大家只看核心代码即可。

本题是区间合并问题。

我们可以将所有区间开始起始位置升序,然后取出第一个区间作为基准值pre,从第二个区间cur开始遍历:如果 cur.start <= pre.end,则说明两个区间有重叠,此时我们应该将两个区间合并,合并策略是将pre.end = max(pre.end, cur.end)

代码

c++
vector<vector<int>> merge(vector<vector<int>> vec, int n) {
    vector<vector<int>> ans;
    vector<int> pre=vec[0];
    for(int i=1;i<n;i++) {
        auto cur=vec[i];
        if(cur[0]>pre
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2024剑指offer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值