#1733

Minimum Number of People to Teach

Medium
ArrayHash TableGreedyHash MapArray
LeetCode ↗

Approaches

Brute ForceOptimal
Complexity Comparison
Brute ForceOptimal Solution
Time
O(n²)
O(n + m)
Space
O(1)
O(m)
💡

Intuition

Time O(n + m)Space O(m)

The optimal solution leverages a more systematic approach using a mapping of languages to users, allowing us to efficiently determine which users need to be taught based on their friendships.

⚙️

Algorithm

4 steps
  1. 1Step 1: Create a mapping of each language to the users who know it.
  2. 2Step 2: For each friendship, track which languages are known by the users involved.
  3. 3Step 3: For each language, count how many users from the friendship pairs need to be taught that language.
  4. 4Step 4: Return the minimum count of users needed to be taught across all languages.
solution.py15 lines
1def minTeach(n, languages, friendships):
2    from collections import defaultdict
3    lang_to_users = defaultdict(set)
4    for i, lang_set in enumerate(languages):
5        for lang in lang_set:
6            lang_to_users[lang].add(i + 1)
7    min_teach = float('inf')
8    for lang in range(1, n + 1):
9        to_teach = set()
10        for u, v in friendships:
11            if lang not in languages[u - 1] and lang not in languages[v - 1]:
12                to_teach.add(u)
13                to_teach.add(v)
14        min_teach = min(min_teach, len(to_teach))
15    return min_teach

Complexity note: The time complexity is O(n + m) because we process each language and friendship once. The space complexity is O(m) for storing the mapping of languages to users.

  • 1Understanding the relationships between users is crucial.
  • 2Mapping languages to users helps in efficiently determining who needs to be taught.

Solutions and explanations are original Tejav content. Problem titles © LeetCode — use the LeetCode button above for the full problem statement.