Bird
Raised Fist0
DSA Javascriptprogramming~20 mins

Insert Interval into Sorted List in DSA Javascript - Practice Problems & Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Interval Insertion Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output after inserting an interval into a sorted list
What is the output of the following code after inserting the interval [4, 8] into the sorted list of intervals?
DSA Javascript
function insertInterval(intervals, newInterval) {
  const result = [];
  let i = 0;
  while (i < intervals.length && intervals[i][1] < newInterval[0]) {
    result.push(intervals[i]);
    i++;
  }
  while (i < intervals.length && intervals[i][0] <= newInterval[1]) {
    newInterval[0] = Math.min(newInterval[0], intervals[i][0]);
    newInterval[1] = Math.max(newInterval[1], intervals[i][1]);
    i++;
  }
  result.push(newInterval);
  while (i < intervals.length) {
    result.push(intervals[i]);
    i++;
  }
  return result;
}

const intervals = [[1, 3], [6, 7], [9, 12]];
const newInterval = [4, 8];
console.log(insertInterval(intervals, newInterval));
A[[1,3],[6,8],[9,12]]
B[[1,3],[4,8],[9,12]]
C[[1,3],[4,8],[9,12],[6,7]]
D[[1,3],[4,8],[6,7],[9,12]]
Attempts:
2 left
💡 Hint
Think about merging overlapping intervals after inserting the new one.
❓ Predict Output
intermediate
2:00remaining
Result after inserting a non-overlapping interval at the start
What is the output after inserting the interval [0, 0] into the sorted list [[1, 2], [3, 5], [6, 7]]?
DSA Javascript
function insertInterval(intervals, newInterval) {
  const result = [];
  let i = 0;
  while (i < intervals.length && intervals[i][1] < newInterval[0]) {
    result.push(intervals[i]);
    i++;
  }
  while (i < intervals.length && intervals[i][0] <= newInterval[1]) {
    newInterval[0] = Math.min(newInterval[0], intervals[i][0]);
    newInterval[1] = Math.max(newInterval[1], intervals[i][1]);
    i++;
  }
  result.push(newInterval);
  while (i < intervals.length) {
    result.push(intervals[i]);
    i++;
  }
  return result;
}

const intervals = [[1, 2], [3, 5], [6, 7]];
const newInterval = [0, 0];
console.log(insertInterval(intervals, newInterval));
A[[0,0],[1,2],[3,5],[6,7]]
B[[1,2],[3,5],[6,7],[0,0]]
C[[0,0],[1,2],[3,5]]
D[[0,2],[3,5],[6,7]]
Attempts:
2 left
💡 Hint
The new interval does not overlap and is before all existing intervals.
🔧 Debug
advanced
2:00remaining
Identify the error in interval insertion code
What error will the following code produce when inserting [5, 10] into [[1, 4], [6, 8]]?
DSA Javascript
function insertInterval(intervals, newInterval) {
  const result = [];
  let i = 0;
  while (i < intervals.length && intervals[i][1] < newInterval[0]) {
    result.push(intervals[i]);
    i++;
  }
  while (i < intervals.length && intervals[i][0] <= newInterval[1]) {
    newInterval[0] = Math.min(newInterval[0], intervals[i][0]);
    newInterval[1] = Math.max(newInterval[1], intervals[i][1]);
    i++;
  }
  result.push(newInterval);
  while (i < intervals.length) {
    result.push(intervals[i]);
    i++;
  }
  return result;
}

const intervals = [[1, 4], [6, 8]];
const newInterval = [5, 10];
console.log(insertInterval(intervals, newInterval));
AOutput: [[1,4],[5,10]]
BOutput: [[1,4],[5,10],[6,8]]
COutput: [[1,4],[5,10],[6,8],[5,10]]
DOutput: [[1,4],[5,10],[6,8],[6,8]]
Attempts:
2 left
💡 Hint
Check the conditions in the while loops carefully.
🧠 Conceptual
advanced
1:30remaining
Understanding interval merging logic
Why does the insertion algorithm merge intervals that overlap with the new interval instead of just inserting it?
ATo remove intervals that are smaller than the new interval
BTo increase the number of intervals for better performance
CTo maintain the list sorted and non-overlapping after insertion
DTo sort the intervals in descending order
Attempts:
2 left
💡 Hint
Think about the properties of the interval list after insertion.
🚀 Application
expert
3:00remaining
Final intervals after multiple insertions
Given an initially empty list, what is the final list after inserting intervals in this order: [1,3], [2,6], [8,10], [15,18]?
DSA Javascript
function insertInterval(intervals, newInterval) {
  const result = [];
  let i = 0;
  while (i < intervals.length && intervals[i][1] < newInterval[0]) {
    result.push(intervals[i]);
    i++;
  }
  while (i < intervals.length && intervals[i][0] <= newInterval[1]) {
    newInterval[0] = Math.min(newInterval[0], intervals[i][0]);
    newInterval[1] = Math.max(newInterval[1], intervals[i][1]);
    i++;
  }
  result.push(newInterval);
  while (i < intervals.length) {
    result.push(intervals[i]);
    i++;
  }
  return result;
}

let intervals = [];
intervals = insertInterval(intervals, [1,3]);
intervals = insertInterval(intervals, [2,6]);
intervals = insertInterval(intervals, [8,10]);
intervals = insertInterval(intervals, [15,18]);
console.log(intervals);
A[[1,3],[6,8],[10,15],[18,18]]
B[[1,3],[2,6],[8,10],[15,18]]
C[[1,6],[8,18]]
D[[1,6],[8,10],[15,18]]
Attempts:
2 left
💡 Hint
Merge intervals that overlap after each insertion.

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 add the new interval at the end without checking overlaps
B. To merge overlapping intervals and keep the list sorted
C. To remove all intervals that come before the new interval
D. To sort the intervals again after insertion without merging

Solution

  1. Step 1: Understand the problem context

    We have a sorted list of intervals with no overlaps, and we want to insert a new interval.
  2. Step 2: Identify the correct approach

    We must merge any intervals that overlap with the new one and keep the list sorted.
  3. Final Answer:

    To merge overlapping intervals and keep the list sorted -> Option B
  4. Quick Check:

    Insert interval = merge and sort [OK]
Hint: Merge overlapping intervals to keep list sorted after insertion [OK]
Common Mistakes:
  • Inserting without merging overlaps
  • Appending without sorting
  • Removing unrelated intervals
2. Which of the following is the correct syntax to insert an interval [3,5] into a JavaScript array named intervals?
easy
A. intervals.push([3,5])
B. intervals.insert([3,5])
C. intervals.add([3,5])
D. intervals.append([3,5])

Solution

  1. Step 1: Recall JavaScript array methods

    JavaScript arrays use push() to add elements at the end.
  2. Step 2: Match method to syntax

    push() is correct; insert(), add(), and append() are not valid JavaScript array methods.
  3. Final Answer:

    intervals.push([3,5]) -> Option A
  4. Quick Check:

    Use push() to add elements in JS arrays [OK]
Hint: Use push() to add elements to JavaScript arrays [OK]
Common Mistakes:
  • Using insert() which is not a JS array method
  • Using add() or append() from other languages
  • Forgetting to add as an array element
3. What is the output of the following code?
const intervals = [[1,2],[5,6]];
const newInterval = [3,5];
function insertInterval(intervals, newInterval) {
  const result = [];
  let i = 0;
  while (i < intervals.length && intervals[i][1] < newInterval[0]) {
    result.push(intervals[i]);
    i++;
  }
  while (i < intervals.length && intervals[i][0] <= newInterval[1]) {
    newInterval[0] = Math.min(newInterval[0], intervals[i][0]);
    newInterval[1] = Math.max(newInterval[1], intervals[i][1]);
    i++;
  }
  result.push(newInterval);
  while (i < intervals.length) {
    result.push(intervals[i]);
    i++;
  }
  return result;
}
console.log(insertInterval(intervals, newInterval));
medium
A. [[1,2],[5,6],[3,5]]
B. [[1,2],[3,5],[5,6]]
C. [[1,6]]
D. [[1,2],[3,6]]

Solution

  1. Step 1: Process intervals before newInterval

    Intervals before newInterval are [[1,2]] because 2 < 3, so push [1,2].
  2. Step 2: Merge overlapping intervals

    Intervals overlapping with newInterval are [5,6] because 5 <= 5. Merge [3,5] and [5,6] to get [3,6].
  3. Step 3: Add merged interval and remaining intervals

    Push merged [3,6]. No intervals left after merging.
  4. Final Answer:

    [[1,2],[3,6]] -> Option D
  5. Quick Check:

    Merged intervals = [[1,2],[3,6]] [OK]
Hint: Merge intervals overlapping newInterval, keep others as is [OK]
Common Mistakes:
  • Not merging overlapping intervals
  • Adding newInterval multiple times
  • Incorrectly ordering intervals after merge
4. Identify the bug in this code snippet that inserts a new interval into a sorted list:
function insert(intervals, newInterval) {
  let result = [];
  let i = 0;
  while (i < intervals.length && intervals[i][1] < newInterval[0]) {
    result.push(intervals[i]);
    i++;
  }
  while (i < intervals.length && intervals[i][0] < newInterval[1]) {
    newInterval[0] = Math.min(newInterval[0], intervals[i][0]);
    newInterval[1] = Math.max(newInterval[1], intervals[i][1]);
    i++;
  }
  result.push(newInterval);
  while (i < intervals.length) {
    result.push(intervals[i]);
    i++;
  }
  return result;
}
medium
A. The newInterval is pushed before merging
B. The first while condition should use < instead of <=
C. The second while condition should use <= instead of <
D. The result array is not initialized

Solution

  1. Step 1: Analyze the second while loop condition

    The second loop merges overlapping intervals. It uses intervals[i][0] < newInterval[1], which misses intervals starting exactly at newInterval[1].
  2. Step 2: Correct the condition

    Change < to <= to include intervals starting at newInterval[1] for proper merging.
  3. Final Answer:

    The second while condition should use <= instead of < -> Option C
  4. Quick Check:

    Use <= to merge intervals starting at newInterval[1] [OK]
Hint: Use <= to include intervals starting exactly at newInterval end [OK]
Common Mistakes:
  • Using < instead of <= in merge condition
  • Pushing newInterval too early
  • Not initializing result array
5. Given intervals = [[1,3],[6,9]] and newInterval = [2,5], what is the correct output after inserting and merging intervals?
hard
A. [[1,5],[6,9]]
B. [[1,3],[2,5],[6,9]]
C. [[2,5],[6,9]]
D. [[1,9]]

Solution

  1. Step 1: Identify intervals before newInterval

    Interval [1,3] overlaps with newInterval [2,5] because 3 >= 2, so no intervals come before without overlap.
  2. Step 2: Merge overlapping intervals

    Merge [1,3] and [2,5] to get [1,5]. Interval [6,9] does not overlap and stays as is.
  3. Final Answer:

    [[1,5],[6,9]] -> Option A
  4. Quick Check:

    Merged intervals = [[1,5],[6,9]] [OK]
Hint: Merge all overlapping intervals including newInterval [OK]
Common Mistakes:
  • Not merging overlapping intervals
  • Adding newInterval without merging
  • Merging unrelated intervals
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard