Home > Backend Development > PHP Tutorial > Find Champion II

Find Champion II

Mary-Kate Olsen
Release: 2024-12-16 14:24:11
Original
371 people have browsed it

2924. Find Champion II

Difficulty: Medium

Topics: Graph

There are n teams numbered from 0 to n - 1 in a tournament; each team is also a node in a DAG.

You are given the integer n and a 0-indexed 2D integer array edges of length m representing the DAG, where >dges[i] = [ui, vi] indicates that there is a directed edge from team ui to team vi in the graph.

A directed edge from a to b in the graph means that team a is stronger than team b and team b is weaker than team a.

Team a will be the champion of the tournament if there is no team b that is stronger than team a.

Return the team that will be the champion of the tournament if there is a unique champion, otherwise, return -1.

Notes

  • A cycle is a series of nodes a1, a2, ..., an, an 1 such that node a1 is the same node as node an 1, the nodes a1, a2, ..., an are distinct, and there is a directed edge from the node ai to node ai 1 for every i in the range [1, n].
  • A DAG is a directed graph that does not have any cycle.

Example 1:

Find Champion II

  • Input: n = 3, edges = [[0,1],[1,2]]
  • Output: 0
  • Explanation: Team 1 is weaker than team 0. Team 2 is weaker than team 1. So the champion is team 0.

Example 2:

Find Champion II

  • Input: n = 4, edges = [[0,2],[1,3],[1,2]]
  • Output: -1
  • Explanation: Team 2 is weaker than team 0 and team 1. Team 3 is weaker than team 1. But team 1 and team 0 are not weaker than any other teams. So the answer is -1.

Constraints:

  • 1 <= n <= 100
  • m == edges.length
  • 0 <= m <= n * (n - 1) / 2
  • edges[i].length == 2
  • 0 <= edge[i][j] <= n - 1
  • edges[i][0] != edges[i][1]
  • The input is generated such that if team a is stronger than team b, team b is not stronger than team a.
  • The input is generated such that if team a is stronger than team b and team b is stronger than team c, then team a is stronger than team c.

Hint:

  1. The champion(s) should have in-degree 0 in the DAG.

Solution:

We need to identify the team(s) with an in-degree of 0 in the given Directed Acyclic Graph (DAG). Teams with no incoming edges represent teams that no other team is stronger than, making them candidates for being the champion. If there is exactly one team with an in-degree of 0, it is the unique champion. If there are multiple or no such teams, the result is -1.

Let's implement this solution in PHP: 2924. Find Champion II






Explanation:

  1. Input Parsing:

    • n is the number of teams.
    • edges is the list of directed edges in the graph.
  2. Initialize In-degree:

    • Create an array inDegree of size n initialized to 0.
  3. Calculate In-degree:

    • For each edge [u, v], increment the in-degree of v (team v has one more incoming edge).
  4. Find Candidates:

    • Iterate through the inDegree array and collect indices where the in-degree is 0. These indices represent teams with no other stronger teams.
  5. Determine Champion:

    • If exactly one team has in-degree 0, it is the unique champion.
    • If multiple teams or no teams have in-degree 0, return -1.

Example Walkthrough

Example 1:

  • Input: n = 3, edges = [[0, 1], [1, 2]]
  • In-degree: [0, 1, 1]
  • Teams with in-degree 0: [0]
  • Output: 0 (Team 0 is the unique champion).

Example 2:

  • Input: n = 4, edges = [[0, 2], [1, 3], [1, 2]]
  • In-degree: [0, 0, 2, 1]
  • Teams with in-degree 0: [0, 1]
  • Output: -1 (There are multiple potential champions).

Complexity Analysis

  1. Time Complexity:

    • Computing in-degrees: O(m), where m is the number of edges.
    • Checking teams: O(n), where n is the number of teams.
    • Total: O(n m).
  2. Space Complexity:

    • inDegree array: O(n).

This solution is efficient and works within the given constraints.

Contact Links

If you found this series helpful, please consider giving the repository a star on GitHub or sharing the post on your favorite social networks ?. Your support would mean a lot to me!

If you want more helpful content like this, feel free to follow me:

  • LinkedIn
  • GitHub

The above is the detailed content of Find Champion II. For more information, please follow other related articles on the PHP Chinese website!

source:dev.to
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template