Challenge - 5 Problems
Merge Intervals Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediateOutput of merging intervals with overlapping pairs
What is the output of the following Go code that merges overlapping intervals?
DSA Go
package main import ( "fmt" "sort" ) func merge(intervals [][]int) [][]int { sort.Slice(intervals, func(i, j int) bool { return intervals[i][0] < intervals[j][0] }) merged := [][]int{} for _, interval := range intervals { if len(merged) == 0 || merged[len(merged)-1][1] < interval[0] { merged = append(merged, interval) } else { if merged[len(merged)-1][1] < interval[1] { merged[len(merged)-1][1] = interval[1] } } } return merged } func main() { intervals := [][]int{{1,3},{2,6},{8,10},{15,18}} result := merge(intervals) fmt.Println(result) }
Attempts:
2 left
💡 Hint
Look at how intervals are sorted and merged when overlapping.
✗ Incorrect
The code sorts intervals by start time, then merges overlapping intervals by extending the end time. Intervals [1,3] and [2,6] overlap and merge into [1,6]. Others remain separate.
🧠 Conceptual
intermediateNumber of intervals after merging
Given intervals [[1,4],[4,5],[7,9],[8,10]], how many intervals remain after merging overlapping ones?
Attempts:
2 left
💡 Hint
Check which intervals overlap or touch at edges.
✗ Incorrect
Intervals [1,4] and [4,5] merge into [1,5]. Intervals [7,9] and [8,10] merge into [7,10]. So total 2 merged intervals.
🔧 Debug
advancedIdentify the error in merging intervals code
What error does this Go code produce when merging intervals?
func merge(intervals [][]int) [][]int {
merged := [][]int{}
for _, interval := range intervals {
if len(merged) == 0 || merged[len(merged)-1][1] < interval[0] {
merged = append(merged, interval)
} else {
if merged[len(merged)-1][1] < interval[1] {
merged[len(merged)-1][1] = interval[1]
}
}
}
return merged
}
Note: The input intervals are not sorted.
Attempts:
2 left
💡 Hint
Think about the importance of sorting intervals before merging.
✗ Incorrect
Without sorting, intervals may not be in order, so merging logic fails to combine all overlapping intervals correctly, producing wrong output.
❓ Predict Output
advancedOutput of merging intervals with nested overlaps
What is the output of this Go code merging intervals with nested overlaps?
DSA Go
package main import ( "fmt" "sort" ) func merge(intervals [][]int) [][]int { sort.Slice(intervals, func(i, j int) bool { return intervals[i][0] < intervals[j][0] }) merged := [][]int{} for _, interval := range intervals { if len(merged) == 0 || merged[len(merged)-1][1] < interval[0] { merged = append(merged, interval) } else { if merged[len(merged)-1][1] < interval[1] { merged[len(merged)-1][1] = interval[1] } } } return merged } func main() { intervals := [][]int{{1,10},{2,6},{8,10},{15,18}} result := merge(intervals) fmt.Println(result) }
Attempts:
2 left
💡 Hint
Nested intervals merge into the largest containing interval.
✗ Incorrect
Intervals [1,10], [2,6], and [8,10] overlap and merge into [1,10]. Interval [15,18] remains separate.
🚀 Application
expertMinimum number of meeting rooms needed
Given intervals representing meeting times [[0,30],[5,10],[15,20]], what is the minimum number of meeting rooms required to hold all meetings without overlap?
Attempts:
2 left
💡 Hint
Count how many meetings overlap at the same time.
✗ Incorrect
Meetings [0,30] and [5,10] overlap, so at least 2 rooms are needed. Meeting [15,20] overlaps with [0,30] but not with [5,10] after it ends.
