TIP103 Unit 2 Session 1 (Click for link to problem statements)
Understand what the interviewer is asking for by using test cases and questions about the problem.
Q: What is the desired outcome?
Q: What input is provided?
races, where each element is a pair [winner, loser].Q: What constraints or nuances should be considered?
races list (either as winner or loser).Match the problem to a common pattern or data structure.
Plan the solution with appropriate visualizations and pseudocode.
General Idea:
Track how many races each traveler lost, and identify all travelers who participated. Then classify them into two categories.
1) Initialize an empty dictionary `loss_count` to store how many times each traveler has lost.
2) Initialize a set `participants` to track all travelers who appeared in races.
3) Iterate through `races`:
- Add both winner and loser to `participants`.
- Increment the loss count for the loser in `loss_count`.
4) Initialize two empty lists:
- `no_losses`: travelers in `participants` not in `loss_count`
- `one_loss`: travelers in `loss_count` with a count of 1
5) Sort both lists.
6) Return [no_losses, one_loss]
⚠️ Common Mistakes
races.def find_travelers(races):
# Dictionary to count number of losses per traveler
loss_count = {}
# Set of all participants
participants = set()
for winner, loser in races:
participants.add(winner)
participants.add(loser)
if loser in loss_count:
loss_count[loser] += 1
else:
loss_count[loser] = 1
# Lists for travelers with no losses and exactly one loss
no_losses = []
one_loss = []
for traveler in participants:
if traveler not in loss_count:
no_losses.append(traveler)
elif loss_count[traveler] == 1:
one_loss.append(traveler)
# Sort the results
no_losses.sort()
one_loss.sort()
return [no_losses, one_loss]
Review with sample input/output and verify against edge cases.
races1 = [[1, 3], [2, 3], [3, 6], [5, 6], [5, 7], [4, 5], [4, 8], [4, 9], [10, 4], [10, 9]]
races2 = [[2, 3], [1, 3], [5, 4], [6, 4]]
print(find_travelers(races1)) # Expected: [[1, 2, 10], [4, 5, 7, 8]]
print(find_travelers(races2)) # Expected: [[1, 2, 5, 6], []]
Evaluate time and space complexity.
