{x}
blog image

Count of Matches in Tournament

You are given an integer n, the number of teams in a tournament that has strange rules:

  • If the current number of teams is even, each team gets paired with another team. A total of n / 2 matches are played, and n / 2 teams advance to the next round.
  • If the current number of teams is odd, one team randomly advances in the tournament, and the rest gets paired. A total of (n - 1) / 2 matches are played, and (n - 1) / 2 + 1 teams advance to the next round.

Return the number of matches played in the tournament until a winner is decided.

 

Example 1:

Input: n = 7
Output: 6
Explanation: Details of the tournament: 
- 1st Round: Teams = 7, Matches = 3, and 4 teams advance.
- 2nd Round: Teams = 4, Matches = 2, and 2 teams advance.
- 3rd Round: Teams = 2, Matches = 1, and 1 team is declared the winner.
Total number of matches = 3 + 2 + 1 = 6.

Example 2:

Input: n = 14
Output: 13
Explanation: Details of the tournament:
- 1st Round: Teams = 14, Matches = 7, and 7 teams advance.
- 2nd Round: Teams = 7, Matches = 3, and 4 teams advance.
- 3rd Round: Teams = 4, Matches = 2, and 2 teams advance.
- 4th Round: Teams = 2, Matches = 1, and 1 team is declared the winner.
Total number of matches = 7 + 3 + 2 + 1 = 13.

 

Constraints:

  • 1 <= n <= 200

Solution Explanation for LeetCode 1688: Count of Matches in Tournament

This problem can be solved efficiently using a simple mathematical observation. The core idea is that each match eliminates one team. To get down to one winning team from n teams, we need to eliminate n-1 teams. Since each match eliminates one team, the total number of matches must be n-1.

Approach

The problem describes a tournament where teams are paired off in matches. If there's an odd number of teams, one team gets a bye (advances without playing). The key insight is that regardless of whether the number of teams is even or odd in any round, exactly one team is eliminated per match.

To end up with a single winner, we must eliminate all but one of the n initial teams. This means we must eliminate n - 1 teams. Since one team is eliminated per match, the total number of matches played is n - 1.

Time and Space Complexity Analysis

Time Complexity: O(1) - The solution involves a single subtraction operation, making it constant time. It doesn't depend on the input size n.

Space Complexity: O(1) - The solution uses a constant amount of extra space, regardless of the input size.

Code Implementation (Multiple Languages)

The code implementations below directly reflect the mathematical solution: return n - 1;

Python

class Solution:
    def numberOfMatches(self, n: int) -> int:
        return n - 1

Java

class Solution {
    public int numberOfMatches(int n) {
        return n - 1;
    }
}

C++

class Solution {
public:
    int numberOfMatches(int n) {
        return n - 1;
    }
};

Go

func numberOfMatches(n int) int {
    return n - 1
}

JavaScript

/**
 * @param {number} n
 * @return {number}
 */
var numberOfMatches = function(n) {
    return n - 1;
};

TypeScript

function numberOfMatches(n: number): number {
    return n - 1;
}

All these code snippets have the same underlying logic: they directly return n - 1, representing the total number of matches needed. This is the most efficient and concise way to solve this problem.