855. 考场就座

【有序集合】用TreeSet存已经选好的座位,每次遍历所有的座位,如果两个之间的差值比当前max大,那么更新max和最后落座的位置。需要特别注意特判一下开头和结尾,因为有leave的缘故,0号不一定有人坐。

class ExamRoom {int n;TreeSet<Integer> set = new TreeSet();public ExamRoom(int n) {this.n = n;}public int seat() {if (set.size() == 0) {set.add(0);return 0;}int pre = set.first(), max = set.first(), idx = 0;for (int x: set) {int t = (x - pre) >> 1;if (t > max) {max = t;idx = (x + pre) >> 1;}pre = x;}int t = n - 1 - set.last();if (t > max) idx = n - 1;set.add(idx);return idx;}public void leave(int p) {set.remove(p);}
}/*** Your ExamRoom object will be instantiated and called as such:* ExamRoom obj = new ExamRoom(n);* int param_1 = obj.seat();* obj.leave(p);*/
class ExamRoom {
public:// 51:19int n;set<int> s;ExamRoom(int n) {this -> n = n;}int seat() {if (s.size() == 0) {s.insert(0);return 0;}int pre = *s.begin(), mx = pre, idx = 0;for (int x: s) {int t = (x - pre) >> 1;if (t > mx) {mx = t;idx = (x + pre) >> 1;}pre = x;}int t = n - 1 - *(--s.end());if (t > mx) idx = n - 1;s.insert(idx);return idx;}void leave(int p) {s.erase(p);}
};/*** Your ExamRoom object will be instantiated and called as such:* ExamRoom* obj = new ExamRoom(n);* int param_1 = obj->seat();* obj->leave(p);*/

LeetCode 855. 考场就座相关推荐

  1. LeetCode - OrderMap - 855.考场就座

    题目 855.考场就座 难度 中等 在考场里,一排有 N 个座位,分别编号为 0, 1, 2, -, N-1 . 当学生进入考场后,他必须坐在能够使他与离他最近的人之间的距离达到最大化的座位上.如果有 ...

  2. 855. 考场就座(高频题)

    855. 考场就座 题目 解题思路 代码 题目 在考场里,一排有 N 个座位,分别编号为 0, 1, 2, -, N-1 . 当学生进入考场后,他必须坐在能够使他与离他最近的人之间的距离达到最大化的座 ...

  3. LeetCode解析------855.考场就座

    题目: 在考场里,一排有 N 个座位,分别编号为 0, 1, 2, -, N-1 . 当学生进入考场后,他必须坐在能够使他与离他最近的人之间的距离达到最大化的座位上.如果有多个这样的座位,他会坐在编号 ...

  4. 【855. 考场就座】

    来源:力扣(LeetCode) 描述: 在考场里,一排有 N 个座位,分别编号为 0, 1, 2, ..., N-1 . 当学生进入考场后,他必须坐在能够使他与离他最近的人之间的距离达到最大化的座位上 ...

  5. Leetcode 855. Exam Room 考场就座:提供两种解法

    Leetcode 855. Exam Room 考场就座: 提供两种解法 855. Exam Room 考场就座(两种解法) 题目描述 示例: 解答1 代码1 解答2 代码2 855. Exam Ro ...

  6. Leetcode 855:考场就座

    题目描述 在考场里,一排有 N 个座位,分别编号为 0, 1, 2, ..., N-1 . 当学生进入考场后,他必须坐在能够使他与离他最近的人之间的距离达到最大化的座位上.如果有多个这样的座位,他会坐 ...

  7. JAVA程序设计:考场就座(LeetCode:855)

    在考场里,一排有 N 个座位,分别编号为 0, 1, 2, ..., N-1 . 当学生进入考场后,他必须坐在能够使他与离他最近的人之间的距离达到最大化的座位上.如果有多个这样的座位,他会坐在编号最小 ...

  8. 【LeetCode - 855】考场就座

    文章目录 1.题目描述 2.解题思路 3.解题代码 1.题目描述 2.解题思路 初始化:定义一个 TreeSet 存储已经占有的座位号,该数据结构会自动从小到大排序: seat: 1)定义一个全局最优 ...

  9. LeetCode 考场就座

    在考场里,一排有 N 个座位,分别编号为 0, 1, 2, -, N-1 . 当学生进入考场后,他必须坐在能够使他与离他最近的人之间的距离达到最大化的座位上.如果有多个这样的座位,他会坐在编号最小的座 ...

最新文章

  1. angularjs2 html转义,详解Angular.js数据绑定时自动转义html标签及内容
  2. 拼多多员工爆料:拼多多开启硬核模式!午休减半!每月工作300小时!千万别来拼多多!...
  3. torch.full()简介
  4. MapReduce编程实战之“工作原理”
  5. 详解虚函数的实现过程之菱形继承修罗场(6)
  6. python中的 set 中的元素
  7. iOS开发(7)通过uiimageView浅谈UIView
  8. 分布式系统的面试题5
  9. 数组中出现次数超过一半的数
  10. 岁月在变迁,彼此在成长。而我在流浪
  11. 苹果可折叠iPhone有望在2023年推出 支持手写笔
  12. tps是什么意思_系统了解精益生产系统TPS精益思想丛书介绍
  13. 数据可视化方向的毕业设计详细思路
  14. iphone抓包调试神器—Stream安装和使用
  15. 《计算机网络教程》(微课版 第五版) 第六章 网络应用层 课后习题及答案
  16. Phyton Flask框架学习记录。
  17. 2010最新网络语言
  18. 卢克,学着去读源代码
  19. 三大流量站点你适合做哪个?
  20. Springboot+vue 社团管理系统(前后端分离)

热门文章

  1. busybox 安装问题解决
  2. 先知ppt_先知对股市的预测
  3. GMAT不能用计算机吗,GMAT数学能不能用计算器
  4. Code Igniter + PHP5.3 + SqlServer2008配置
  5. 数据库数据 | TCGA数据库33种癌症的 miRNA Isoform Expression数据
  6. MATLAB——如何转换pointcloud格式并读取txt文件并赋值给矩阵
  7. mikrotik运行其他Linux软件,MikroTik ROS系统的几种安装方法
  8. 阻塞语句与非阻塞语句
  9. 软件项目管理韩万江版课后习题答案
  10. python动态换图tkinter库的Canvas画布组件