-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMaximumMeetings.java
More file actions
60 lines (49 loc) · 1.64 KB
/
MaximumMeetings.java
File metadata and controls
60 lines (49 loc) · 1.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package Greedy;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
/**
* Find the maximum number of meetings accommodated in a room.
*/
public class MaximumMeetings {
public static void main(String[] args) {
List<Integer> startTime = List.of(1, 3, 0, 5, 8, 5);
List<Integer> endTime = List.of(2, 4, 6, 7, 9, 9);
List<Meeting> meetings = new ArrayList<>();
for (int i = 0; i < startTime.size(); i++) {
meetings.add(new Meeting(i + 1, startTime.get(i), endTime.get(i)));
}
List<Integer> result = new ArrayList<>();
meetings.sort(new ItemComparator());
result.add(meetings.get(0).no);
Meeting previous = meetings.get(0);
for (int i = 1; i < meetings.size(); i++) {
Meeting current = meetings.get(i);
if (current.start > previous.finish) {
result.add(current.no);
previous = current;
}
}
System.out.println(result);
}
private static class ItemComparator implements Comparator<Meeting> {
@Override
public int compare(Meeting o1, Meeting o2) {
return Integer.compare(o1.finish, o2.finish);
}
}
private static class Meeting {
Integer no;
Integer start;
Integer finish;
public Meeting(Integer no, Integer start, Integer finish) {
this.no = no;
this.start = start;
this.finish = finish;
}
@Override
public String toString() {
return "Meeting{" + "start=" + start + ", finish=" + finish + '}';
}
}
}