📖 Scenario: You are managing a schedule of booked time slots represented as intervals. Each interval has a start and end time. The schedule is sorted by start times and intervals do not overlap.Now, you receive a new time slot request. You want to insert this new interval into the schedule, merging it with existing intervals if they overlap, so the schedule remains sorted and without overlaps.
🎯 Goal: Build a program that inserts a new interval into a sorted list of non-overlapping intervals and merges any overlapping intervals.
📋 What You'll Learn
Create a list of intervals represented as integer arrays with start and end times.
Create a new interval to insert into the list.
Write logic to insert and merge the new interval correctly.
Print the final list of merged intervals.
💡 Why This Matters
🌍 Real World
Scheduling systems, calendar apps, and booking platforms often need to insert and merge time intervals to avoid conflicts.
💼 Career
Understanding interval insertion and merging is useful for software engineers working on calendar features, resource allocation, and time management tools.
Progress0 / 4 steps
1
Create the initial list of intervals
Create a list of integer arrays called intervals with these exact intervals: [1, 3], [6, 9].
DSA C#
Hint
Use List<int[]> and initialize it with two arrays: new int[] {1, 3} and new int[] {6, 9}.
2
Create the new interval to insert
Create an integer array called newInterval with the exact values [2, 5].
DSA C#
Hint
Use int[] newInterval = new int[] {2, 5}; to create the new interval.
3
Insert and merge the new interval
Write code to insert newInterval into intervals and merge overlapping intervals. Use a new list called merged to store the result. Iterate over intervals with foreach (int[] interval in intervals). Merge intervals that overlap with newInterval. Add non-overlapping intervals directly to merged. After the loop, add the last newInterval to merged. Finally, assign intervals = merged.
DSA C#
Hint
Use the standard interval insertion and merging logic with comparisons of start and end times. Update newInterval when merging.
4
Print the merged intervals
Use a foreach loop with int[] interval in intervals to print each interval in the format [start, end] on its own line using Console.WriteLine.
DSA C#
Hint
Use Console.WriteLine($"[{interval[0]}, {interval[1]}]"); inside a foreach loop to print each interval.
Practice
(1/5)
1. What is the main goal when inserting a new interval into a sorted list of non-overlapping intervals?
easy
A. To sort the intervals again after insertion without merging
B. To add the new interval at the end without checking overlaps
C. To remove all intervals that come before the new interval
D. To merge overlapping intervals and keep the list sorted without overlaps
Solution
Step 1: Understand the problem context
The list contains sorted, non-overlapping intervals. Inserting a new interval may cause overlaps.
Step 2: Identify the required action
We must merge any overlapping intervals with the new one and keep the list sorted without overlaps.
Final Answer:
To merge overlapping intervals and keep the list sorted without overlaps -> Option D
Quick Check:
Insert and merge intervals = To merge overlapping intervals and keep the list sorted without overlaps [OK]
Hint: Merge overlapping intervals to keep list sorted and non-overlapping [OK]
Common Mistakes:
Inserting without merging overlaps
Appending without sorting
Removing unrelated intervals
2. Which of the following C# code snippets correctly declares a list of intervals as List intervals?
easy
A. var intervals = new List { [1, 3], [6, 9] };
B. var intervals = new List { new int[] {1, 3}, new int[] {6, 9} };
C. List intervals = new List { (1, 3), (6, 9) };
D. List<int> intervals = new List<int> { {1, 3}, {6, 9} };
Solution
Step 1: Check correct syntax for List of int arrays
List requires elements as int arrays, declared with new int[] {start, end}.
Step 2: Validate each option
var intervals = new List { new int[] {1, 3}, new int[] {6, 9} }; uses new int[] correctly; others use invalid syntax like braces or tuples.
Final Answer:
var intervals = new List { new int[] {1, 3}, new int[] {6, 9} }; -> Option B
Quick Check:
List of int arrays syntax = var intervals = new List { new int[] {1, 3}, new int[] {6, 9} }; [OK]
Hint: Use new int[] {start, end} inside List initialization [OK]
Common Mistakes:
Using curly braces instead of new int[]
Using tuples instead of arrays
Incorrect variable type declaration
3. Given the intervals [[1, 3], [6, 9]] and a new interval [2, 5], what is the resulting list after inserting and merging?
medium
A. [[2, 5], [6, 9]]
B. [[1, 3], [2, 5], [6, 9]]
C. [[1, 5], [6, 9]]
D. [[1, 9]]
Solution
Step 1: Identify overlapping intervals
The new interval [2, 5] overlaps with [1, 3] because 2 ≤ 3.
Step 2: Merge overlapping intervals
Merge [1, 3] and [2, 5] into [1, 5]. The interval [6, 9] remains unchanged.
Final Answer:
[[1, 5], [6, 9]] -> Option C
Quick Check:
Merged intervals = [[1, 5], [6, 9]] [OK]
Hint: Merge intervals if new start ≤ existing end [OK]
Common Mistakes:
Not merging overlapping intervals
Inserting new interval without merging
Merging all intervals incorrectly
4. Consider this C# code snippet to insert an interval into a sorted list. What is the bug?
var intervals = new List { new int[] {1, 2}, new int[] {3, 5} };
var newInterval = new int[] {4, 7};
foreach(var interval in intervals) {
if(interval[1] >= newInterval[0]) {
interval[1] = Math.Max(interval[1], newInterval[1]);
break;
}
}
medium
A. It modifies only the first overlapping interval but misses merging subsequent overlaps
B. It throws a runtime exception due to invalid index access
C. It inserts the new interval at the wrong position
D. It does not check for any overlaps before merging
Solution
Step 1: Analyze the loop behavior
The loop breaks after merging with the first overlapping interval, ignoring others.
Step 2: Identify the bug impact
Intervals after the first overlap are not merged, causing incorrect final intervals.
Final Answer:
It modifies only the first overlapping interval but misses merging subsequent overlaps -> Option A
Quick Check:
Loop breaks early, missing merges = It modifies only the first overlapping interval but misses merging subsequent overlaps [OK]
Hint: Do not break loop early; merge all overlapping intervals [OK]
Common Mistakes:
Breaking loop too soon
Not merging all overlaps
Assuming single overlap only
5. You have intervals [[1, 2], [3, 5], [6, 7], [8, 10], [12, 16]] and a new interval [4, 8]. After inserting and merging, what is the final list?
hard
A. [[1, 2], [3, 10], [12, 16]]
B. [[1, 2], [4, 8], [12, 16]]
C. [[1, 2], [3, 5], [6, 7], [8, 10], [12, 16]]
D. [[1, 2], [3, 8], [12, 16]]
Solution
Step 1: Find intervals overlapping with [4, 8]
Intervals [3, 5], [6, 7], and [8, 10] overlap with [4, 8].
Step 2: Merge all overlapping intervals
Merge [3, 5], [6, 7], [8, 10], and [4, 8] into [3, 10].