Problem · Array

Tournament Rounds by Rank

Learn this problem
EasyUberFULLTIMEPHONE SCREEN
See Uber hiring insights

Problem statement

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

simulateTournamentRounds(ranks: int[]) → int[][]

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

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.

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]]
checking account