你是一名行政助理,手里有两位客户的空闲时间表:slots1 和 slots2,以及会议的预计持续时间 duration,请你为他们安排合适的会议时间。

「会议时间」是两位客户都有空参加,并且持续时间能够满足预计时间 duration 的 最早的时间间隔

如果没有满足要求的会议时间,就请返回一个 空数组

「空闲时间」的格式是 [start, end],由开始时间 start 和结束时间 end 组成,表示从 start 开始,到 end 结束。

题目保证数据有效:同一个人的空闲时间不会出现交叠的情况,也就是说,对于同一个人的两个空闲时间 [start1, end1] 和 [start2, end2],要么 start1 > end2,要么 start2 > end1

示例 1:

输入:slots1 = [[10,50],[60,120],[140,210]], slots2 = [[0,15],[60,70]], duration = 8
输出:[60,68]

示例 2:

输入:slots1 = [[10,50],[60,120],[140,210]], slots2 = [[0,15],[60,70]], duration = 12
输出:[]

提示:

  • 1 <= slots1.length, slots2.length <= 10^4
  • slots1[i].length, slots2[i].length == 2
  • slots1[i][0] < slots1[i][1]
  • slots2[i][0] < slots2[i][1]
  • 0 <= slots1[i][j], slots2[i][j] <= 10^9
  • 1 <= duration <= 10^6 

思路:我们首先需要将这一系列坐标按x轴进行排序,然后我们可以采用双指针的方法遍历两个列表完成求解。

指针移动的条件:因为x轴是从小到大排好序的,因此我们只用考虑当前谁的纵坐标较小就先移动谁。

class Solution {class node{ int x,y;public node(int x,int y){this.x=x;this.y=y;}}class mySort implements Comparator<node>{@Overridepublic int compare(node o1, node o2) {if(o1.x==o2.x)return o1.y-o2.y;return o1.x-o2.x;}}public List<Integer> minAvailableDuration(int[][] slots1, int[][] slots2, int duration) {List<node> list1=new ArrayList<node>();List<node> list2=new ArrayList<node>();for(int i=0;i<slots1.length;i++)list1.add(new node(slots1[i][0],slots1[i][1]));for(int i=0;i<slots2.length;i++)list2.add(new node(slots2[i][0],slots2[i][1]));Collections.sort(list1,new mySort());Collections.sort(list2,new mySort());for(int i=0;i<list1.size();i++)System.out.printf("%d %d\n",list1.get(i).x,list1.get(i).y);List<Integer> ans=new ArrayList<>();int i=0,j=0,p=Integer.MAX_VALUE;while(i<list1.size() && j<list2.size()){int r=Math.min(list1.get(i).y, list2.get(j).y);//System.out.printf("%d %d %d\n",list1.get(i).x,list2.get(j).x,r);if(list1.get(i).x<=list2.get(j).x){if(r-list2.get(j).x>=duration){p=list2.get(j).x+duration;break;}}else{if(r-list1.get(i).x>=duration){p=list1.get(i).x+duration;break;}}if(list1.get(i).y==r) i++;if(list2.get(j).y==r) j++;}System.out.println(p);if(p!=Integer.MAX_VALUE){ans.add(p-duration);ans.add(p);}return ans;}
}

第 11 场双周赛-5089. 安排会议日程(双指针)相关推荐

  1. 5089. 安排会议日程

    你是一名行政助理,手里有两位客户的空闲时间表:slots1 和 slots2,以及会议的预计持续时间 duration,请你为他们安排合适的会议时间. 「会议时间」是两位客户都有空参加,并且持续时间能 ...

  2. LeetCode 第 30 场双周赛(477/2545,前18.7%,第2次全部通过)

    文章目录 1. 比赛结果 2. 题目 1. LeetCode 5177. 转变日期格式 easy 2. LeetCode 5445. 子数组和排序后的区间和 medium 3. LeetCode 54 ...

  3. LeetCode第45场双周赛-解题报告

    LeetCode第45场双周赛-解题报告 A. 唯一元素的和 原题链接 https://leetcode-cn.com/problems/sum-of-unique-elements/ 解题思路 因为 ...

  4. 以赛促练-力扣第85场双周赛以及第307场周赛

    文章目录 第85场双周赛 T3.字母移位II T4.删除操作后的最大子段和 第307场周赛 T2.最大回文数字 T3.感染二叉树需要的总时间 T4.找出数组的第K大和 第85场双周赛 T1直接暴力枚举 ...

  5. [LeetCode周赛复盘] 第 89 场双周赛20221015

    [LeetCode周赛复盘] 第 89 场双周赛20221015 一.本周周赛总结 二. [Easy] 6208. 有效时间的数目 1. 题目描述 2. 思路分析 3. 代码实现 三.[Medium] ...

  6. 20220219:力扣第72场双周赛题解

    力扣第72场双周赛 题目 思路与算法 代码实现 写在最后 题目 统计数组中相等且可以被整除的数对 找到和为给定整数的三个连续整数 拆分成最多数目的偶整数之和 统计数组中好三元组数目 思路与算法 前三题 ...

  7. 20210530:力扣第53场双周赛题解

    力扣第53场双周赛题解 题目 思路与算法 代码实现 写在最后 题目 长度为三且各字符不同的子字符串 数组中最大数对和的最小值 矩阵中最大的三个菱形和 思路与算法 长度为三且各字符不同的子字符串:遍历查 ...

  8. 20201023:力扣第37场双周赛(上)

    力扣第37场双周赛(上) 题目 思路与算法 代码实现 写在最后 题目 删除某些元素后的数组均值 网络信号最好的坐标 思路与算法 第二题直接暴力就可以了,计算每个点的所有偏移量存入list,即以(0,0 ...

  9. 【双周赛】第74场双周赛

    第74场双周赛 6020. 将数组划分成相等数对 6021. 字符串中最多数目的子字符串 6022. 将数组和减半的最少操作次数 6023. 用地毯覆盖后的最少白色砖块 6020. 将数组划分成相等数 ...

最新文章

  1. ThreadLocal和单例对象比较
  2. 矩阵乘法的本质是什么
  3. VS2010 手动为控件添加事件处理函数
  4. Redis源码学习-MasterSlave的命令交互
  5. 机器学习-LR推导及与SVM的区别
  6. java图形界面的监听_非专业码农 JAVA学习笔记 用户图形界面设计与实现-所有控件的监听事件...
  7. 什么是写一个java类,Java什么是类?class的相关介绍
  8. C++基础04-类基础
  9. 一个demo学会c++编程
  10. 睿远基金副总经理傅鹏博:用实业思维做投资 在认知范围之内做选择
  11. SharePoint 2019 预览版下载地址(中文)
  12. 批量查询网站收录情况的站长工具
  13. 5个适合提升自己的自学网站,每一个都很强大, 适合职场人自我提升的学习网站,利用起来,离加薪更近一步
  14. oracle根据关键字搜索存储过程
  15. STM32 Cubemax(十一) ——JY901陀螺仪数据的读取与简单数据处理
  16. 计算机英语中文谐音,翻译成中文的英文歌 英文歌用中文谐音唱
  17. base64图片 复制到系统剪切板
  18. Live800:大数据将如何改变客户服务?
  19. 一些常用函数的拉普拉斯变换
  20. 从今天开始给自己定一个小目标

热门文章

  1. Misc,院赛:两道签到、忘记密码
  2. word流程图怎么做虚线框_如何在visio中画虚线框以及将visio图形复制到word文档
  3. 如何解决E680i经常有内存不足提示的问题
  4. 【愚公系列】2022年09月 微信小程序-three.js绘制正方体
  5. 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之6---移动增值业务概述
  6. 计算机信息安全攻防大赛,2018年度信息安全攻防大赛圆满收官
  7. 05丨指标关系:你知道并发用户数应该怎么算吗?
  8. 第二期预告|中国工程院院刊:信息与电子工程领域青年学术前沿论坛
  9. 新唐M0内核。接口的TTL电平和斯密特电平的使用
  10. 在线生成图片大全——绝对经典