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

LC.855 | 考场就座 | 有序集合 | set的应用

输入:

  • 构造:ExamRoom(int n),座位编号为[0, n-1]
  • 操作:
    • seat():安排下一位学生入座
    • leave(int p):座位p的学生离开(保证p上有人)

要求:

  • seat()必须选择离最近的人最远的位置;
  • 若有多个满足条件,选编号最小的座位。

输出:

  • seat()返回座位编号;leave()无返回。

思路:

用一个有序集合set<int> students维护当前已坐下的座位编号(自动有序)。

seat() 怎么找最优位置?

最优位置只可能出现在三类“空段”里:

  1. 头部空段:从0到第一个已坐位置first
  • 如果坐0,到最近人的距离就是first - 0 = first
  • 所以头部候选距离dist = first,候选座位bestSeat = 0
  1. 中间空段:两个相邻已坐座位prevs之间
  • 最优就是坐在中点(向下取整),距离为(s - prev) / 2
  • 遍历students,对每一对相邻座位计算d = (s - prev) / 2
  • d > dist,更新bestSeat = prev + d
  1. 尾部空段:最后一个已坐位置lastn-1
  • 如果坐n-1,距离就是(n-1) - last
  • tailDist > dist,更新bestSeat = n-1

最后把bestSeat插入集合并返回。

leave()

直接students.erase(p)即可。


复杂度:

  • 时间复杂度:
    • seat():O(M) 扫描当前已坐人数M(set 遍历) + 插入 O(log M)
    • leave():O(log M)
  • 空间复杂度:O(M)

classExamRoom{private:intN;set<int>students;public:ExamRoom(intn){N=n;}intseat(){if(students.empty()){students.insert(0);return0;}intdist=*students.begin();// 头部空段距离intbestSeat=0;intprev=-1;for(ints:students){if(prev!=-1){intd=(s-prev)/2;if(d>dist){dist=d;bestSeat=prev+d;}}prev=s;}inttailDist=(N-1)-*students.rbegin();if(tailDist>dist){bestSeat=N-1;}students.insert(bestSeat);returnbestSeat;}voidleave(intp){students.erase(p);}};
http://www.jsqmd.com/news/155899/

相关文章:

  • PyTorch混合精度训练AMP实战:节省显存提升速度
  • 082300141 吴昕昀团队工作汇报
  • 大宋历史传
  • XLink 总结
  • LC.2353 | 设计食物评分系统 | 有序集合 | 负分数排序实现“最高分优先 + 字典序优先”
  • 【课程设计/毕业设计】基于Springboot的在线英语阅读平台的设计与实现基于springboot的大学生英语学习平台【附源码、数据库、万字文档】
  • 基于VUE的白告水果店[VUE]-计算机毕业设计源码+LW文档
  • Python3 日期和时间处理详解
  • 【课程设计/毕业设计】基于 SpringBoot+Vue+Java 实现酒店客房管理系统基于springboot的宾馆客房管理系统【附源码、数据库、万字文档】
  • 史上最强X3D CPU!9950X3D2首次曝光:双3D V-Cache、192MB缓存
  • 2025年哈尔滨正规的地铁广告价格,公交广告/户外led大屏广告/广播电台广告/地铁广告/电视台广告地铁广告公司排行榜单 - 品牌推荐师
  • MATLAB仿真与建模基础实战教程(从入门到实操,附完整可运行案例)
  • 8.8英寸“大手机”!华为MatePad Mini官降300元:2999元起 全系麒麟旗舰芯
  • GPU算力使用审计日志系统建设方案
  • 抖音运营资源合集
  • 卷积神经网络反向传播过程图解(PyTorch实现)
  • YOLO训练任务排队系统上线,资源公平调度
  • 2025年市场口碑好的层板货架制造厂家排行榜,阁楼货架/重型货架/仓储货架/层板货架/横梁货架,层板货架生产商排行榜 - 品牌推荐师
  • Conda环境导出为yml文件:共享PyTorch配置的最佳方式
  • 非root用户执行sudo命令时提示sudo: source: command not found
  • 【课程设计/毕业设计】基于SpringBoot的供应链管理系统的设计与实现供应链运营中采购、仓储、物流、销售环节【附源码、数据库、万字文档】
  • YOLO与Kubernetes集成:大规模集群部署的最佳实践
  • 2025必备10个降AI率工具,MBA必看!
  • Anaconda与Miniconda选择指南:哪个更适合PyTorch?
  • 2025热流道技术哪家强:8大顶尖厂商深度解析 - 栗子测评
  • Markdown转PDF发布技术文档:PyTorch教程制作指南
  • 震惊!AI应用架构师必知,构建企业级AI治理框架的绝世指南
  • 2025年国内有实力的层板货架供应厂家排行榜,穿梭式货架/中型货架/仓库货架/横梁货架,层板货架品牌口碑推荐 - 品牌推荐师
  • VPC 内相关组件详细介绍
  • Java计算机毕设之基于SpringBoot的生产供应链管理系统的设计与实现基于SpringBoot的供应链管理系统的设计与实现(完整前后端代码+说明文档+LW,调试定制等)