news 2026/3/20 10:36:47

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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);}};
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/15 15:13:06

YOLOv11检测结果分析:Precision-Recall曲线绘制

YOLOv11检测结果分析&#xff1a;Precision-Recall曲线绘制 在智能安防、自动驾驶和工业质检等实际场景中&#xff0c;目标检测模型不仅要“看得快”&#xff0c;更要“看得准”。随着 YOLO 系列不断演进&#xff0c;YOLOv11 凭借其更强的特征提取能力和更优的锚框机制&#xf…

作者头像 李华
网站建设 2026/3/15 23:53:48

PyTorch自动求导机制autograd详解(含代码演示)

PyTorch自动求导机制与CUDA容器化开发环境实战解析 在深度学习模型研发过程中&#xff0c;我们常常面临两个核心挑战&#xff1a;一是如何高效、准确地计算复杂网络的梯度&#xff1b;二是如何快速搭建稳定且高性能的训练环境。PyTorch 的 autograd 自动求导系统和预集成的 PyT…

作者头像 李华
网站建设 2026/3/15 23:53:44

PyTorch模型转ONNX格式用于跨平台部署

PyTorch模型转ONNX格式用于跨平台部署 在现代AI系统开发中&#xff0c;一个常见的困境是&#xff1a;研究团队用PyTorch训练出高性能模型后&#xff0c;工程团队却难以将其高效部署到生产环境。尤其是在面对边缘设备、移动端或异构硬件时&#xff0c;框架依赖和推理性能问题尤为…

作者头像 李华
网站建设 2026/3/15 23:53:46

Markdown表格美化:展示PyTorch模型性能对比数据

Markdown表格美化&#xff1a;展示PyTorch模型性能对比数据 在深度学习项目中&#xff0c;团队常常面临一个看似简单却影响深远的问题&#xff1a;如何高效、清晰地共享和比较不同模型的训练表现&#xff1f;尤其是在使用GPU资源进行大规模实验时&#xff0c;参数量、显存占用、…

作者头像 李华