Frequent Co working Spaces - codepath/compsci_guides GitHub Wiki
Unit 4 Session 2 Standard (Click for link to problem statements)
U-nderstand
Understand what the interviewer is asking for by using test cases and questions about the problem.
- Q: What is the goal of the problem?
- A: The goal is to determine which co-working space(s) were visited most frequently over the past month.
- Q: What are the inputs?
- A: The input is a list of strings, where each string represents the name of a co-working space visited.
- Q: What are the outputs?
- A: The output is a list of the most frequently visited co-working space(s). If there is a tie, return all tied spaces.
- Q: How should ties be handled?
- A: If multiple spaces have the same highest frequency, return all of them.
- Q: Are there any assumptions about the input?
- A: The input list can contain repeated strings representing multiple visits to the same space.
P-lan
Plan the solution with appropriate visualizations and pseudocode.
General Idea: Use a dictionary to count the frequency of visits to each co-working space. Then, identify the maximum frequency and collect all spaces that have this frequency.
1) Initialize an empty dictionary `frequency_map` to store the frequency of each space.
2) Iterate through the `visits` list:
a) For each space, increment its count in `frequency_map`.
3) Identify the maximum visit count `max_visits` from the dictionary.
4) Initialize an empty list `most_frequent` to store the spaces with the maximum frequency.
5) Iterate through `frequency_map`:
a) Add each space to `most_frequent` if its count equals `max_visits`.
6) Return the `most_frequent` list.
**⚠️ Common Mistakes**
- Forgetting to account for ties, resulting in only one space being returned when multiple should be.
- Not correctly initializing or updating the frequency dictionary.
- Assuming the input list is always non-empty.
I-mplement
def most_frequent_spaces(visits):
frequency_map = {}
for space in visits:
if space in frequency_map:
frequency_map[space] += 1
else:
frequency_map[space] = 1
max_visits = 0
most_frequent = []
for space, count in frequency_map.items():
if count > max_visits:
max_visits = count
most_frequent = [space]
elif count == max_visits:
most_frequent.append(space)
return most_frequent
Example Usage:
visits = ["WeWork", "Regus", "Spaces", "WeWork", "Regus", "WeWork"]
print(most_frequent_spaces(visits))
# Output: ['WeWork']
visits_2 = ["IndieDesk", "Spaces", "IndieDesk", "WeWork", "Spaces", "IndieDesk", "WeWork"]
print(most_frequent_spaces(visits_2))
# Output: ['IndieDesk']
visits_3 = ["Hub", "Regus", "WeWork", "Hub", "WeWork", "Regus", "Hub", "Regus"]
print(most_frequent_spaces(visits_3))
# Output: ['Hub', 'Regus']