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. 裁员大潮来袭,程序员面试的这些技巧收藏好!
  2. 使用nvl就不能groupby了吗_宝妈月子期间真的不能吃酱油、醋、葱姜蒜吗?金牌月嫂教你月子餐调味料使用大全!...
  3. 粒子群(PSO)算法简介
  4. boost::copy_n相关的测试程序
  5. js中onload和jQuery中的ready区别
  6. linux 字符串加入中括号,Shell 中的中括号用法总结
  7. ckeditor ——在图片上传中上传其他文件(word等)
  8. RAID简单介绍和Linux如何搭建一个RAID
  9. 计算机科技兴趣小组活动总结,信息技术兴趣小组活动总结
  10. 火山安卓帧布局器的基本使用方式
  11. 无人机欧拉角万向节锁死详解
  12. 计算机开机后报rundll,图文教你win10开机出现rundll无法找到入口的解决方法
  13. Android类似微信详细地址选择(高德地图)
  14. 手机支付商业模式剖析
  15. TensorFlow发布Eager,便于Debug!
  16. ubuntu linux 环境下的程序打包
  17. 东风岚图配谈“梦想”吗?
  18. 那些年我们在spark SQL上踩过的坑
  19. 基于STM32F1-C8T6无人机(二)——舵机/电调/空心杯电机/飞控/机架/subs接收机/充电器和电池(给出链接和思考)
  20. React本地化解决版本更迭出现的缓存问题

热门文章

  1. 7805输入电流有要求吗_7805怎样才能输出2A的电流啊?
  2. 大数据时代时代舍恩伯格书资源_【干货满满】这些书都没看?那你的数据分析白学了!——产品运营专属...
  3. XDOJ-1100-无聊的xry111(RMQ)
  4. YNS2582 SSOP-10 升压充电 12V耐压输入自适应
  5. linux postfix 日志,postfix的邮件log分析工具pflogsumm
  6. Fragment随笔(一)
  7. 爬虫选手初养成Day1 | 影评数据爬虫及情感分析
  8. 在线记账管理系统php源码,企业在线记账管理系统 v6.5 build20190606
  9. 场景理解-资料3-Bottom-Up and Top-Down Attention
  10. 从零开始学JAVA:二、Java基本语法(四)——流程控制