Calculating Conservation Statistics - codepath/compsci_guides GitHub Wiki
U-nderstand
Understand what the interviewer is asking for by using test cases and questions about the problem.
- Q
- What is the desired outcome?
- To return the number of distinct averages calculated by removing the minimum and maximum populations repeatedly.
- What input is provided?
- A 0-indexed integer array
species_populations
.
- A 0-indexed integer array
- What is the desired outcome?
P-lan
Plan the solution with appropriate visualizations and pseudocode.
General Idea: Sort the population list, then repeatedly remove the minimum and maximum values, calculate their average, and store it in a set.
1) Sort `species_populations`.
2) Initialize a set `averages` to store distinct averages.
3) While the population list is not empty:
- Remove the minimum and maximum populations.
- Calculate their average and add it to the set.
4) Return the size of the set.
⚠️ Common Mistakes
- Not handling the removal of elements from both ends of the list properly.
I-mplement
def distinct_averages(species_populations):
# Sort the populations to easily find the min and max
species_populations.sort()
# Initialize a set to store distinct averages
averages = set()
while species_populations:
# Remove the min and max populations
min_pop = species_populations.pop(0)
max_pop = species_populations.pop(-1)
# Calculate the average
average = (min_pop + max_pop) / 2
# Add the average to the set
averages.add(average)
# Return the number of distinct averages
return len(averages)