Revolving Door
You are given a list of list of integers requests
. requests[i]
contains [time, direction]
meaning at time time
, a person arrived at the door and either wanted to go in (1
) or go out (0
).
Given that there’s only one door and it takes one time unit to use the door, we have the following rules to resolve conflicts:
- The door starts with
in
position and then is set to the position used by the last person. - If there’s only one person at the door at given time, they can use the door.
- When two or more people want to go in, earliest person goes first and then the direction previously used holds precedence.
- If no one uses the door for one time unit, it reverts back to the starting
in
position.
Return a sorted list of lists where each element contains [time, direction]
, meaning at time
, a person either went in or out.
Constraints
0 ≤ n ≤ 100,000
wheren
is the length ofrequests
https://binarysearch.com/problems/Revolving-Door
Examples
Example 1
Input
- requests =
[[1,0],
[2,1],
[5,0],
[5,1],
[2,0]]
Output
- answer =
[[1, 0], [2, 0], [3, 1], [5, 1], [6, 0]]
Explanation
The door starts as in
- At time
1
, there’s only one person so they can go out. Door becomes out. - At time
2
, there’s two people but the person going out has priority so they go out. - At time
3
, the person looking to go in can now go in. - At time
5
, there’s two people but the person going in has priority so they go out. - At time
6
, the last person can go out.
Example 2
Input
- requests =
[[1,0],
[2,0],
[2,1],
[1,1]]
Output
- answer =
[[1, 1], [2, 0], [3, 0], [4, 1]]
Explanation
The door starts as in
- At time
1
, there’s two people but the person going in has higher priority. - At time
2
, the other person who came at time1
can go out. Door becomesout
- At time
3
, there’s two people but the person going out has higher priority. - At time
4
, the last person can go in
Leave a comment