1
class Solution {
2
public int smallestChair(int[][] times, int targetFriend) {
3
int targetStart = times[targetFriend][0];
4
Arrays.sort(times, (a, b) -> a[0] - b[0]);
5

6
PriorityQueue<Integer> available = new PriorityQueue<>();
7
for (int i = 0; i < times.length; ++i) {
8
available.offer(i);
9
}
10

11
PriorityQueue<int[]> pq = new PriorityQueue<>((a, b) -> a[0] - b[0]);
12

13
for (int i = 0; i < times.length; ++i) {
14
while (!pq.isEmpty() && pq.peek()[0] <= times[i][0]) {
15
available.offer(pq.poll()[1]);
16
}
17

18
if (times[i][0] == targetStart) {
19
break;
20
}
21

22
pq.offer(new int[] {times[i][1], available.poll()});
23
}
24

25
return available.peek();
26
}
27
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0