当前位置: 首页 > article >正文

【C++刷题】力扣-#252-会议室

题目描述

给定一个会议时间安排的数组 intervals,每个 intervals[i] 表示一个会议的开始和结束时间。判断一个人是否能够参加所有的会议(即没有会议是重叠的)。

示例

示例 1:

输入:intervals = [[0,30],[5,10],[15,20]]
输出:false

示例 2:

输入:intervals = [[7,10],[9,12]]
输出:true

题解

这个问题可以通过排序和贪心算法来解决。

  1. 排序:首先根据会议的开始时间对 intervals 进行排序。
  2. 检查重叠:遍历排序后的会议时间,对于每个会议,检查它的开始时间是否大于或等于前一个会议的结束时间。
    ○ 如果是,说明没有重叠,继续检查下一个会议。
    ○ 如果不是,说明存在重叠,返回 false。
  3. 返回结果:如果所有会议检查完毕,没有发现重叠,返回 true。

代码实现

bool canAttendMeetings(vector<vector<int>>& intervals) {
    sort(intervals.begin(), intervals.end());
    for (int i = 1; i < intervals.size(); i++) {
        if (intervals[i][0] < intervals[i-1][1]) {
            return false;
        }
    }
    return true;
}

复杂度分析

● 时间复杂度:O(n log n),其中 n 是会议的数量。主要时间消耗在排序上。
● 空间复杂度:O(1),因为我们只使用了常数个额外变量。
这个算法的优势在于它的时间效率较高,只需要一次遍历即可判断所有会议是否冲突,且不需要额外的存储空间。


http://www.kler.cn/news/356007.html

相关文章:

  • 【AI学习】Mamba学习(八):HiPPO通用框架定义和方法
  • JAVA学习-练习试用Java实现“选择排序”
  • 学生社会适应能力测试
  • 【最新华为OD机试E卷-支持在线评测】内存资源分配(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)
  • WordPress+Nginx 安装教程
  • 越狱你的 iPhone 安全吗?
  • JMeter之mqtt-jmeter 插件介绍
  • 一个使用接口模式、工厂模式、模板方法模式的日志文件系统
  • Python画笔案例-086 turtle 多线程绘画
  • Unity Vision Pro 保姆级开发教程-PolySpatial VisionOS Samples 示例场景
  • 基于STM32设计的实验室安全预警系统(OneNet)(246)
  • ssm医院交互系统+vue
  • 华为OD机试真题-数组连续和-2024年OD统一考试(E卷)
  • 无极低码课程【redis windows下服务注册密码修改】
  • 微信小程序-独立分包/分包预下载
  • Apache 出现 “403 forbidden“ 排查方法
  • rockscache源码分析:如何解决缓存db的最终一致性
  • nginx反向代理下的长连接
  • 小公司团队管理:8个你需要知道的要点
  • Ollama及其Open-WebUI部署更新