920. 会议室
给定一系列的会议时间间隔,包括起始和结束时间[[s1,e1],[s2,e2],…(si < ei),确定一个人是否可以参加所有会议。
算法步骤
- 重写sort方法,按开始时间给intervals排序
- 遍历,比较每个的start和上一个的end
代码
/**
* 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) {
Collections.sort(intervals,new Comparator<Object>(){
public int compare(Object o1,Object o2){
Interval i1 = (Interval)o1;
Interval i2 = (Interval)o2;
if(i1.start > i2.start){
return 1;
}
if(i1.start < i2.start){
return -1;
}
return 0;
}
});
for(int i=1;i<intervals.size();i++){
if(intervals.get(i).start<intervals.get(i-1).end) return false;
}
return true;
}
}
919. 会议室 II
给定一系列的会议时间间隔intervals,包括起始和结束时间[[s1,e1],[s2,e2],…] (si < ei),找到所需的最小的会议室数量。
算法步骤
- 重写sort方法,按开始时间给intervals排序
- 用rooms保存每个会议室使用的结束时间
- 遍历intervals
- 每次找出当前结束最早的会议室
- 若能用这个会议室,当前会议室的结束时间更新
- 若不能用,则要添加一个会议室
- 最后返回会议室的长度
代码
/**
* 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
Collections.sort(intervals,new Comparator<Object>(){
@Override
public int compare(Object o1,Object o2){
Interval i1 = (Interval) o1;
Interval i2 = (Interval) o2;
if(i1.start > i2.start) return 1;
if(i1.start < i2.start) return -1;
return 0;
}
});
List<Integer> rooms = new ArrayList<Integer>();
rooms.add(intervals.get(0).end);
for(int i=1;i<intervals.size();i++){
int minend = rooms.get(0);
int minr = 0;
for(int j=0;j<rooms.size();j++){
if(rooms.get(j)<minend) {
minend = rooms.get(j);
minr = j;
}
}
if(intervals.get(i).start<minend) rooms.add(intervals.get(i).end);
else rooms.set(minr,intervals.get(i).end);
}
return rooms.size();
}
}