FastPrepEmit an Out-of-Order Packet Stream in Order

Emit an Out-of-Order Packet Stream in Order

Bloomberg LP logoBloomberg LP● MediumNEW GRADPHONE SCREENONSITE INTERVIEW
Learn

Problem statement

Packets arrive in the order described by parallel arrays sequence and payloads. Packet i has the unique positive sequence number sequence[i] and payload payloads[i].

The receiver initially expects sequence number 1. After each arrival, emit the longest newly available contiguous run beginning at the expected number. Buffer later packets until every predecessor has arrived.

Return one string array per arrival; use an empty array when that arrival releases nothing.

Function

emitPackets(sequence: int[], payloads: String[]) → String[][]

Examples

Example 1

sequence = [1,2,4,5,3,6,8,7,9]payloads = ["b","l","o","m","o","b","e","r","g"]return = [["b"],["l"],[],[],["o","o","m"],["b"],[],["r","e"],["g"]]

Packets 4 and 5 wait for packet 3; its arrival releases payloads 3, 4, and 5 together. Packet 8 waits for 7, whose arrival releases packet 7's payload r before packet 8's payload e.

Example 2

sequence = [3,1,2]payloads = ["c","a","b"]return = [[],["a"],["b","c"]]

Packet 3 is buffered; packet 1 emits alone, then packet 2 releases both 2 and 3.

Constraints

  • sequence.length == payloads.length.
  • 1 <= sequence.length <= 10^5.
  • sequence is a permutation of 1..n.
  • Payload strings are nonempty.

More Bloomberg LP problems

See Bloomberg LP hiring insights
public String[][] emitPackets(int[] sequence, String[] payloads) {
  // Write your code here.
}
sequence[1,2,4,5,3,6,8,7,9]
payloads["b","l","o","m","o","b","e","r","g"]
expected[["b"], ["l"], [], [], ["o", "o", "m"], ["b"], [], ["r", "e"], ["g"]]
Checking account…