news 2026/9/9 20:04:18

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/9/8 7:13:44

Jupyter Notebook保存检查点:防止PyTorch训练中断丢失

Jupyter Notebook保存检查点&#xff1a;防止PyTorch训练中断丢失 在深度学习的世界里&#xff0c;最让人崩溃的瞬间之一莫过于——你花了整整三天训练一个Transformer模型&#xff0c;GPU风扇呼啸了72小时&#xff0c;结果因为一次意外断电、内核崩溃或者远程连接中断&#x…

作者头像 李华
网站建设 2026/9/2 23:29:07

大模型Token缓存机制优化响应速度

大模型Token缓存机制优化响应速度 在构建智能对话系统时&#xff0c;你是否遇到过这样的问题&#xff1a;用户输入一个问题后&#xff0c;模型“思考”了许久才吐出第一个字&#xff1f;尤其是在生成长文本时&#xff0c;这种延迟变得愈发明显。这并非模型“笨”&#xff0c;而…

作者头像 李华
网站建设 2026/9/8 3:56:09

YOLO与Kubernetes集成:大规模集群部署的最佳实践

YOLO与Kubernetes集成&#xff1a;大规模集群部署的最佳实践 在智能制造工厂的质检线上&#xff0c;数百个摄像头实时回传高清视频流&#xff1b;在城市交通大脑中&#xff0c;成千上万路监控信号需要毫秒级响应——这些场景背后&#xff0c;是对目标检测系统前所未有的并发与稳…

作者头像 李华
网站建设 2026/9/5 7:28:11

CNN模型训练中断?检查你的CUDA驱动与PyTorch兼容性

CNN模型训练中断&#xff1f;检查你的CUDA驱动与PyTorch兼容性 在深度学习项目中&#xff0c;最令人沮丧的场景之一莫过于&#xff1a;你精心设计了一个CNN模型&#xff0c;数据也准备妥当&#xff0c;训练脚本刚跑几分钟&#xff0c;突然报错退出——CUDA error: out of memor…

作者头像 李华
网站建设 2026/9/3 3:09:46

GitHub 热榜项目 - 日榜(2025-12-28)

GitHub 热榜项目 - 日榜(2025-12-28) 生成于&#xff1a;2025-12-28 统计摘要 共发现热门项目&#xff1a; 9 个 榜单类型&#xff1a;日榜 本期热点趋势总结 本期GitHub趋势显示&#xff0c;AI智能体与RAG应用开发依然是绝对热点。项目集中于解决大模型实际落地的关键痛点…

作者头像 李华
网站建设 2026/9/6 18:09:06

如何撰写高转化率的技术博客推广GPU与Token销售

如何通过技术内容高效推广GPU算力与Token服务 在AI研发节奏不断加快的今天&#xff0c;一个令人头疼的问题依然普遍存在&#xff1a;开发者花了半天时间配置环境&#xff0c;结果torch.cuda.is_available()还是返回False。驱动版本不对、CUDA不兼容、cudNN缺失……这些琐碎的技…

作者头像 李华