Problem · Array

Tournament Rounds by Rank

EasyUberFULLTIMEPHONE SCREEN
See Uber hiring insights

You are given an array ranks representing players in tournament order. A smaller number means a stronger rank.

In each round, adjacent players compete: indices 0 and 1, indices 2 and 3, and so on. The player with the smaller rank number advances to the next round. If a round has an odd number of players, the last player advances automatically.

Return the list of rounds after each elimination round. Each inner array should contain the ranks that advanced from that round, in order. Continue until one player remains.

Function Description

Complete the function simulateTournamentRounds in the editor.

simulateTournamentRounds has the following parameter:

  1. int ranks[]: player ranks in the initial bracket order

Returns

int[][]: the advancing ranks after each round

Examples
01 · Example 1
ranks = [1, 2, 3, 4, 5, 6, 7, 8]
return = [[1, 3, 5, 7], [1, 5], [1]]
In the first round, the winners are 1, 3, 5, and 7. Then 1 and 5 advance. Finally, 1 wins.
02 · Example 2
ranks = [3, 1, 2]
return = [[1, 2], [1]]
Player 1 beats player 3. Player 2 has no opponent in the first round and advances automatically.
Constraints
  • Rank values are distinct.
  • A smaller rank number represents a stronger player.
  • If a round has an odd number of players, the last player advances automatically.
More Uber problems
drafts saved locally
public int[][] simulateTournamentRounds(int[] ranks) {
  // write your code here
}
ranks[1, 2, 3, 4, 5, 6, 7, 8]
expected[[1, 3, 5, 7], [1, 5], [1]]
sign in to submit