-
-
Notifications
You must be signed in to change notification settings - Fork 55
/
Copy pathMeetingRooms252.java
86 lines (62 loc) · 1.8 KB
/
MeetingRooms252.java
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package easy;
import java.util.Arrays;
/*
Given an array of meeting time intervals where intervals[i] = [starti, endi],
determine if a person could attend all meetings.
Example 1:
Input: intervals = [[0,30],[5,10],[15,20]]
Output: false
Example 2:
Input: intervals = [[7,10],[2,4]]
Output: true
*/
public class MeetingRooms252 {
// O(N^2) Time | O(1) Space
public static boolean canAttendMeetings1(int[][] intervals) {
for (int id = 0; id < intervals.length; id++) {
for (int curr = 0; curr < intervals.length; curr++) {
if (id != curr) {
int start1 = intervals[id][0], end1 = intervals[id][1];
int start2 = intervals[curr][0], end2 = intervals[curr][1];
boolean checkOverlap = isOverlapping(start1, end1, start2, end2);
if (checkOverlap == true) {
return false;
}
}
}
}
return true;
}
private static boolean isOverlapping(int start1, int end1, int start2, int end2) {
if (start1 == start2)
return true;
if (start1 > start2 && start1 < end2)
return true;
if (end1 > start2 && end1 < end2)
return true;
if (start2 > start1 && start2 < end1)
return true;
if (end2 > start1 && end2 < end1)
return true;
return false;
}
// O(NlogN) Time | O(1) Space
public static boolean canAttendMeetings(int[][] intervals) {
Arrays.sort(intervals, (a, b) -> Integer.compare(a[0], b[0]));
for (int id = 0; id < intervals.length - 1; id++) {
if (intervals[id][1] > intervals[id + 1][0]) {
return false;
}
}
return true;
}
public static void main(String[] args) {
/* test cases */
// [[8,11],[17,20],[17,20]]
// [[13,15],[1,13]]
// { 7, 10 }, { 2, 4 }
int[][] intervals = { { 0, 30 }, { 5, 10 }, { 15, 20 } }; // false
System.out.println(canAttendMeetings1(intervals));
System.out.println(canAttendMeetings(intervals));
}
}