文章目录

  • 题目描述
  • 思路 && 代码

计划里 hot 100 + 剑指Offer 的题目中唯一一道会员题,同时也是最后一道没写的题,刚好今天 leetcode 发了一天会员可以写上…简直命运石之门的选择,感动!

题目描述

  • 转化成上下车问题(好像leetcode 也有原题,不过没写到)
  • start 就是 上车
  • end 就是下车
  • 最多会议室,就是【车上最多人数】

思路 && 代码

  • 步骤一:根据 intervals 新建 updown 数组:【时间】【上下车】
  • 步骤二:对 updown 数组进行排序(根据时间点进行排序,同一时间则先下车)
  • 步骤三:模拟上下车,同时维护【车上最大人数】
class Solution {// 理解成【上下车问题】:开始 = 上车1人,结束 = 下车1人,会议室数量 = 车上人数public int minMeetingRooms(int[][] intervals) {// 1. 初始化:分上下车,建立新数组int n = intervals.length;int[][] updown = new int[n * 2][2];for(int i = 0; i < 2 * n; i += 2) {updown[i][0] = intervals[i / 2][0]; // 取开始值updown[i][1] = 1; // 上车updown[i + 1][0] = intervals[i / 2][1]; // 取结束值updown[i + 1][1] = -1; // 下车}// 2. 排序:时间相同,先下车(结束);时间不同,早的先Arrays.sort(updown, (o1, o2) -> (o1[0] != o2[0] ? Integer.compare(o1[0], o2[0]) : Integer.compare(o1[1], o2[1])));// 3. 模拟上下车流程,维护最大值int count = 0;int max = 0;for(int[] temp : updown) {// 上车 or 下车count += temp[1]; // 获取最大的车上人数max = Math.max(count, max);}return max;}
}
  • 无注释版
class Solution {public int minMeetingRooms(int[][] intervals) {int n = intervals.length;int[][] updown = new int[n * 2][2];for(int i = 0; i < 2 * n; i += 2) {updown[i][0] = intervals[i / 2][0]; updown[i][1] = 1; updown[i + 1][0] = intervals[i / 2][1]; updown[i + 1][1] = -1;}Arrays.sort(updown, (o1, o2) -> (o1[0] != o2[0] ? Integer.compare(o1[0], o2[0]) : Integer.compare(o1[1], o2[1])));int count = 0;int max = 0;for(int[] temp : updown) {count += temp[1]; max = Math.max(count, max);}return max;}
}

【LeetCode笔记】253. 会议室 II(Java、偏数学)相关推荐

  1. LeetCode 253. 会议室 II(贪心+优先队列)

    文章目录 1. 题目 2. 解题 1. 题目 给定一个会议时间安排的数组,每个会议时间都会包括开始和结束的时间 [[s1,e1],[s2,e2],-] (si < ei), 为避免会议冲突,同时 ...

  2. LeetCode 253. 会议室 II**(double)

    具体思路: 貌似是个经典问题,只需要看车上有几个人同时存在即可: 这里最简洁的解法没有用堆或者其他数据结构,只需要让上车cnt+1,下车cnt减1,时间节点做key,用pair存储: 排序后,进行pa ...

  3. LeetCode——113 路径总和 II(JAVA)

    给你二叉树的根节点 root和一个整数目标和 targetSum,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径. 叶子节点 是指没有子节点的节点. 示例 1: 输入:root = [5, ...

  4. 253. 会议室 II

    问题 给定一个会议时间安排的数组,每个会议时间都会包括开始和结束的时间 [[s1,e1],[s2,e2],-] (si < ei),为避免会议冲突,同时要考虑充分利用会议室资源,请你计算至少需要 ...

  5. 力扣253会议室II

    使用堆排序 priority_queue默认是大顶堆等同于 priority_queue<int,vector,less > priority_queue<int,vector,gr ...

  6. Leetcode 137. Single Number II JAVA语言

    1 2 3 Given an array of integers, every element appears three times except for one, which appears ex ...

  7. leetcode笔记(Python版)待更新

    LeetCodeTop100 题目 1    两数之和 42.20% Easy 2    两数相加 30.70%    Medium 3    无重复字符的最长子串 28.00%    Medium ...

  8. 【LeetCode笔记】剑指 Offer 14. 剪绳子 I II(Java、动态规划、偏数学)

    文章目录 剪绳子 I 题目描述 思路 && 代码 1. 动态规划 O(n2n^2n2).O(n) 2. 最优解:数学方法 O(n).O(1) 二刷 剪绳子 II 题目描述 思路 &am ...

  9. 【LeetCode笔记】剑指 Offer 44. 数字序列中某一位的数字(Java、偏数学)

    文章目录 题目描述 思路 && 代码 题目描述 比较偏数学的一道题..众所周知这类题代码量都不大,但是就是难想= = 思路 && 代码 这篇题解写得很好- 建议还是直接 ...

最新文章

  1. 官宣!邢波出任全球首个AI大学校长,MBZUAI明年1月迎来首批新生
  2. 复习es6-let和const
  3. 数钱数到手抽筋游戏的测试用例
  4. mysql日常错误信息解决方法:InnoDB: and force InnoDB to continue crash recovery here.
  5. win7命令行 端口占用 查询进程号 杀进程
  6. Docker Review - docker部署Tomcat Nginx
  7. C++ cin.sync()和cin.ignore()
  8. Mongodb Replica Configure
  9. 2015年2月12日——不懂点
  10. android adt带的ddms的heap功能不显示进程,Android内存泄露之DDMS – Heap工具
  11. 《设计模式详解》软件设计原则
  12. 最著名的数学家一般也是最著名的力学家
  13. Android 使用 Android Studio 把图片转为WebP格式来减小图片的大小
  14. 计算机专业法语怎么读,计算机专业法语词汇
  15. 转:城市码Country Code
  16. vue调用摄像头pc+移动端
  17. 优秀自我简介200字_优秀学生自我介绍200字范文
  18. AARRR模型常见指标
  19. Runnable 和 Callable 的区别
  20. Radiology:人工智能系统脑MRI鉴别诊断精度接近神经放射科医生水平

热门文章

  1. Ajax:异步js和xml
  2. android10全局黑暗,传Android 11或加入自动切换全局黑暗模式功能
  3. 就php干活,php可以做什么?,懂得这些技巧就够了
  4. perl mysql dml_MySQL Connector执行SQL语句的三种方式
  5. jquery 获取键值对中最大值_jquery属性的操作
  6. threadlocal get为空_面试常见知识点:ThreadLocal
  7. C++ 获取char*的长度
  8. 使用Matplotlib创建散点图
  9. MFC中修改应用程序主窗口的标题
  10. 吴恩达作业5:正则化和dropout