Challenge - 5 Problems
Interval Insertion Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate2:00remaining
Output after inserting an interval with overlap
What is the output list of intervals after inserting [4, 8] into the sorted list [[1, 3], [6, 9]]?
DSA C
intervals = [[1, 3], [6, 9]] newInterval = [4, 8] // After insertion and merging overlapping intervals, print the resulting list
Attempts:
2 left
💡 Hint
Remember to merge intervals that overlap after insertion.
✗ Incorrect
The new interval [4, 8] overlaps with [6, 9], so they merge into [4, 9]. Also, [1, 3] does not overlap with [4, 9], so the final list is [[1, 3], [4, 9]].
❓ Predict Output
intermediate2:00remaining
Result after inserting a non-overlapping interval
What is the output list of intervals after inserting [10, 12] into the sorted list [[1, 5], [6, 9]]?
DSA C
intervals = [[1, 5], [6, 9]] newInterval = [10, 12] // Insert and print the resulting list
Attempts:
2 left
💡 Hint
Check if the new interval overlaps with any existing intervals.
✗ Incorrect
The new interval [10, 12] does not overlap with any existing intervals, so it is simply added at the end.
🔧 Debug
advanced3:00remaining
Identify the error in interval insertion code
What error will this code produce when inserting [2, 5] into [[1, 3], [6, 9]]?
int intervals[][2] = {{1, 3}, {6, 9}};
int newInterval[2] = {2, 5};
int result[3][2];
int idx = 0;
for (int i = 0; i < 2; i++) {
if (intervals[i][1] < newInterval[0]) {
result[idx][0] = intervals[i][0];
result[idx][1] = intervals[i][1];
idx++;
} else if (intervals[i][0] > newInterval[1]) {
result[idx][0] = newInterval[0];
result[idx][1] = newInterval[1];
idx++;
newInterval[0] = intervals[i][0];
newInterval[1] = intervals[i][1];
} else {
newInterval[0] = (intervals[i][0] < newInterval[0]) ? intervals[i][0] : newInterval[0];
newInterval[1] = (intervals[i][1] > newInterval[1]) ? intervals[i][1] : newInterval[1];
}
}
result[idx][0] = newInterval[0];
result[idx][1] = newInterval[1];
idx++;
// print result
DSA C
int intervals[][2] = {{1, 3}, {6, 9}}; int newInterval[2] = {2, 5}; int result[3][2]; int idx = 0; for (int i = 0; i < 2; i++) { if (intervals[i][1] < newInterval[0]) { result[idx][0] = intervals[i][0]; result[idx][1] = intervals[i][1]; idx++; } else if (intervals[i][0] > newInterval[1]) { result[idx][0] = newInterval[0]; result[idx][1] = newInterval[1]; idx++; newInterval[0] = intervals[i][0]; newInterval[1] = intervals[i][1]; } else { newInterval[0] = (intervals[i][0] < newInterval[0]) ? intervals[i][0] : newInterval[0]; newInterval[1] = (intervals[i][1] > newInterval[1]) ? intervals[i][1] : newInterval[1]; } } result[idx][0] = newInterval[0]; result[idx][1] = newInterval[1]; idx++;
Attempts:
2 left
💡 Hint
In C, arrays cannot be assigned directly with = operator.
✗ Incorrect
In C, you cannot assign arrays directly like result[idx++] = intervals[i]; This causes a compilation error.
🧠 Conceptual
advanced2:00remaining
Understanding interval merging logic
Why is it important to sort intervals before inserting a new interval and merging?
Attempts:
2 left
💡 Hint
Think about how merging works when intervals are ordered.
✗ Incorrect
When intervals are sorted by start time, we can merge overlapping intervals in one pass from left to right. Without sorting, merging is complicated and may miss overlaps.
🚀 Application
expert3:00remaining
Final merged intervals after multiple insertions
Given the initial sorted intervals [[1, 2], [3, 5], [6, 7], [8, 10], [12, 16]], what is the final list after inserting intervals [4, 8] and then [17, 19] sequentially with merging?
Attempts:
2 left
💡 Hint
Merge overlapping intervals after each insertion carefully.
✗ Incorrect
Inserting [4, 8] merges with [3, 5], [6, 7], and [8, 10] into [3, 10]. Then inserting [17, 19] adds a new interval at the end.
