leetcode 会议室2 与 会议室1
会议室1
描述给定一系列的会议时间间隔,包括起始和结束时间
[[s1,e1],[s2,e2],…(si < ei),确定一个人是否可以参加所有会议。(0,8),(8,10)在8这一时刻不冲突
样例
样例1
输入: intervals = [(0,30),(5,10),(15,20)] 输出: false 解释: (0,30), (5,10) 和 (0,30),(15,20) 这两对会议会冲突样例2
输入: intervals = [(5,8),(9,15)] 输出: true 解释: 这两个时间段不会冲突
/** * Definition of Interval: * public classs Interval { * int start, end; * Interval(int start, int end) { * this.start = start; * this.end = end; * } * } */ public class Solution { /** * @param intervals: an array of meeting time intervals * @return: if a person could attend all meetings */ public boolean canAttendMeetings(List<Interval> intervals) { // Write your code here if(intervals.isEmpty() || intervals.size()==0) return true; //按照end升序排序 Collections.sort(intervals, (a,b)->(a.end - b.end)); int end = intervals.get(0).end; for(int i = 1; i < intervals.size(); i++){ int start = intervals.get(i).start; if(start >= end){ end = intervals.get(i).end; continue; }else{ return false; } } return true; } }
会议室2
描述给定一系列的会议时间间隔intervals,包括起始和结束时间
[[s1,e1],[s2,e2],...] (si < ei),找到所需的最小的会议室数量。(0,8),(8,10)在8这一时刻不冲突
样例样例1
输入: intervals = [(0,30),(5,10),(15,20)] 输出: 2 解释: 需要两个会议室 会议室1:(0,30) 会议室2:(5,10),(15,20)样例2
输入: intervals = [(2,7)] 输出: 1 解释: 只需要1个会议室就够了
[labuladong的题解网站](https://labuladong.gitee.io/algo/3/28/100/)
/** * Definition of Interval: * public classs Interval { * int start, end; * Interval(int start, int end) { * this.start = start; * this.end = end; * } * } */ public class Solution { /** * @param intervals: an array of meeting time intervals * @return: the minimum number of conference rooms required */ public int minMeetingRooms(List<Interval> intervals) { // Write your code here int[] begin = new int[intervals.size()]; int[] end = new int[intervals.size()]; int n = intervals.size(); int i = 0; int j = 0; for(Interval node : intervals){ begin[i++] = node.start; end[j++] = node.end; } Arrays.sort(begin); Arrays.sort(end); // Collections.sort(intervals,()); int count =0; int result =0; i =0; j = 0; while(i<n && j<n){ if(begin[i] < end[j]){ count++;//扫描到一个红点 count++; i++; }else{ count--; //扫描到一个绿点 count--; j++; } result = Math.max(count,result); } return result; } }
本文来自博客园,作者:{zhongweiLeex},转载请注明原文链接:{https://www.cnblogs.com/lzw6/}

浙公网安备 33010602011771号