Find Longest Consecutive Listen Gaps - 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 find the longest gap between consecutive episode listen timestamps.
- Q: What are the inputs?
- A: The input is a list of integers representing the timestamps of episode listens in minutes since midnight, sorted in ascending order.
- Q: What are the outputs?
- A: The output is an integer representing the longest gap in minutes between consecutive listens.
- Q: Are there any assumptions about the input?
- A: The list of timestamps is sorted in ascending order and contains valid integer values representing minutes since midnight.
P-lan
Plan the solution with appropriate visualizations and pseudocode.
General Idea: Iterate through the sorted list of timestamps and calculate the difference between each consecutive pair of timestamps. Track the maximum difference found.
1) Initialize a variable `max_gap` to 0.
2) Iterate through the list of `timestamps` using a loop:
a) For each pair of consecutive timestamps, calculate the gap as `timestamps[i + 1] - timestamps[i]`.
b) If the calculated gap is greater than `max_gap`, update `max_gap` to this value.
3) Return `max_gap` after the loop completes.
**⚠️ Common Mistakes**
- Forgetting that the list is already sorted and attempting unnecessary sorting operations.
- Not correctly updating the `max_gap` when a larger gap is found.
- Assuming that there will always be more than one timestamp in the list without considering edge cases.
I-mplement
def find_longest_gap(timestamps):
# Initialize variables to keep track of the maximum gap
max_gap = 0
n = len(timestamps)
# Two-pointer approach: start with two pointers
i, j = 0, 1
while j < n:
# Calculate the gap between the current pair of timestamps
gap = timestamps[j] - timestamps[i]
# Update max_gap if the current gap is larger
if gap > max_gap:
max_gap = gap
# Move the pointers to the next pair of timestamps
i += 1
j += 1
return max_gap
Example Usage:
timestamps1 = [30, 50, 70, 100, 120, 150]
print(find_longest_gap(timestamps1))
# Output: 30
timestamps2 = [10, 20, 30, 50, 60, 90]
print(find_longest_gap(timestamps2))
# Output: 30
timestamps3 = [5, 10, 15, 25, 35, 45]
print(find_longest_gap(timestamps3))
# Output: 10