Bird
Raised Fist0
DSA Javascriptprogramming~10 mins

Merge Overlapping Intervals in DSA Javascript - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to sort intervals by their start time.

DSA Javascript
intervals.sort((a, b) => a[[1]] - b[[1]]);
Drag options to blanks, or click blank then click option'
A1
B0
Clength
Dstart
Attempts:
3 left
💡 Hint
Common Mistakes
Using index 1 instead of 0 causes sorting by end time, not start time.
Using 'length' or 'start' as index causes errors.
2fill in blank
medium

Complete the code to check if two intervals overlap.

DSA Javascript
if (intervals[i][0] <= merged[merged.length - 1][[1]]) {
Drag options to blanks, or click blank then click option'
A1
Bstart
Clength
D0
Attempts:
3 left
💡 Hint
Common Mistakes
Comparing with index 0 (start) instead of 1 (end) causes wrong overlap detection.
Using 'length' or 'start' as index causes errors.
3fill in blank
hard

Fix the error in updating the end of the last merged interval.

DSA Javascript
merged[merged.length - 1][1] = Math.[1](merged[merged.length - 1][1], intervals[i][1]);
Drag options to blanks, or click blank then click option'
Amax
Bmin
Cabs
Dround
Attempts:
3 left
💡 Hint
Common Mistakes
Using Math.min causes incorrect merging by shortening intervals.
Using Math.abs or Math.round is irrelevant here.
4fill in blank
hard

Fill both blanks to correctly add a non-overlapping interval to merged list.

DSA Javascript
else {
  merged.[1](intervals[[2]]);
}
Drag options to blanks, or click blank then click option'
Apush
Bpop
Cshift
Di
Attempts:
3 left
💡 Hint
Common Mistakes
Using pop, shift, or unshift modifies the wrong end of the array.
Using wrong index instead of i causes errors.
5fill in blank
hard

Fill all three blanks to complete the mergeIntervals function.

DSA Javascript
function mergeIntervals(intervals) {
  if (intervals.length === 0) return [];
  intervals.sort((a, b) => a[[1]] - b[[2]]);
  const merged = [intervals[0]];
  for (let [3] = 1; [3] < intervals.length; [3]++) {
    if (intervals[[3]][0] <= merged[merged.length - 1][1]) {
      merged[merged.length - 1][1] = Math.max(merged[merged.length - 1][1], intervals[[3]][1]);
    } else {
      merged.push(intervals[[3]]);
    }
  }
  return merged;
}
Drag options to blanks, or click blank then click option'
A0
B1
Ci
Dj
Attempts:
3 left
💡 Hint
Common Mistakes
Sorting by different indices causes wrong order.
Using j instead of i is allowed but inconsistent here.
Mixing indices in sort comparator causes errors.

Practice

(1/5)
1. What is the main purpose of the Merge Overlapping Intervals algorithm?
easy
A. To sort intervals by their length
B. To combine all intervals that overlap into one continuous interval
C. To find the maximum number of intervals
D. To split intervals into smaller parts

Solution

  1. Step 1: Understand the problem goal

    The algorithm aims to merge intervals that share any overlapping range into a single interval.
  2. Step 2: Identify the correct purpose

    Among the options, only combining overlapping intervals matches the goal.
  3. Final Answer:

    To combine all intervals that overlap into one continuous interval -> Option B
  4. Quick Check:

    Merge overlapping intervals = combine overlaps [OK]
Hint: Think about joining intervals that touch or overlap [OK]
Common Mistakes:
  • Confusing merging with sorting intervals
  • Thinking it splits intervals instead of merging
  • Assuming it counts intervals instead of merging
2. Which of the following is the correct way to sort intervals by their start time in JavaScript before merging?
easy
A. intervals.sort((a, b) => a[0] - b[0])
B. intervals.sort((a, b) => b[1] - a[1])
C. intervals.sort((a, b) => b[0] - a[0])
D. intervals.sort((a, b) => a[1] - b[1])

Solution

  1. Step 1: Identify sorting key for merging

    We must sort intervals by their start time, which is the first element in each interval array.
  2. Step 2: Choose correct sort function

    The correct syntax is intervals.sort((a, b) => a[0] - b[0]) to sort ascending by start time.
  3. Final Answer:

    intervals.sort((a, b) => a[0] - b[0]) -> Option A
  4. Quick Check:

    Sort by start time = a[0] - b[0] [OK]
Hint: Sort intervals by first element ascending before merging [OK]
Common Mistakes:
  • Sorting by end time instead of start time
  • Sorting in descending order
  • Using wrong array indices for sorting
3. What is the output of the following code?
const intervals = [[1,3],[2,6],[8,10],[15,18]];
function merge(intervals) {
  intervals.sort((a,b) => a[0] - b[0]);
  const merged = [];
  for (const interval of intervals) {
    if (!merged.length || merged[merged.length-1][1] < interval[0]) {
      merged.push(interval);
    } else {
      merged[merged.length-1][1] = Math.max(merged[merged.length-1][1], interval[1]);
    }
  }
  return merged;
}
console.log(merge(intervals));
medium
A. [[1,6],[8,10],[15,18]]
B. [[1,3],[2,6],[8,10],[15,18]]
C. [[1,10],[15,18]]
D. [[1,6],[2,10],[15,18]]

Solution

  1. Step 1: Sort intervals by start time

    Sorted intervals: [[1,3],[2,6],[8,10],[15,18]] (already sorted)
  2. Step 2: Merge overlapping intervals

    Merge [1,3] and [2,6] into [1,6]. Others remain separate.
  3. Final Answer:

    [[1,6],[8,10],[15,18]] -> Option A
  4. Quick Check:

    Merged intervals = [[1,6],[8,10],[15,18]] [OK]
Hint: Merge intervals by comparing end of last merged with start of current [OK]
Common Mistakes:
  • Not merging overlapping intervals
  • Merging intervals incorrectly by extending wrong boundaries
  • Returning original intervals without merging
4. The following code is intended to merge overlapping intervals but has a bug. What is the bug?
function merge(intervals) {
  intervals.sort((a,b) => a[0] - b[0]);
  const merged = [];
  for (const interval of intervals) {
    if (merged.length === 0 || merged[merged.length-1][1] <= interval[0]) {
      merged.push(interval);
    } else {
      merged[merged.length-1][1] = Math.max(merged[merged.length-1][1], interval[1]);
    }
  }
  return merged;
}
medium
A. The merged array is not initialized correctly
B. The intervals are not sorted before merging
C. The condition should use < instead of <= to detect overlap
D. The max function is used incorrectly

Solution

  1. Step 1: Analyze the overlap condition

    The condition uses <= which treats touching intervals as non-overlapping.
  2. Step 2: Correct the condition for merging

    Using < instead of <= allows intervals that touch at the boundary to merge correctly.
  3. Final Answer:

    The condition should use < instead of <= to detect overlap -> Option C
  4. Quick Check:

    Overlap check needs <, not <= [OK]
Hint: Use <, not <=, to merge touching intervals [OK]
Common Mistakes:
  • Using <= causes missing merges for touching intervals
  • Not sorting intervals before merging
  • Incorrectly updating merged intervals
5. Given intervals [[1,4],[4,5],[7,9],[8,10]], what is the merged output if intervals that touch at boundaries are considered overlapping?
hard
A. [[1,4],[5,7],[8,10]]
B. [[1,4],[4,5],[7,9],[8,10]]
C. [[1,10]]
D. [[1,5],[7,10]]

Solution

  1. Step 1: Sort intervals by start time

    Sorted intervals: [[1,4],[4,5],[7,9],[8,10]] (already sorted)
  2. Step 2: Merge touching and overlapping intervals

    [1,4] and [4,5] touch, so merge to [1,5]. [7,9] and [8,10] overlap, merge to [7,10].
  3. Final Answer:

    [[1,5],[7,10]] -> Option D
  4. Quick Check:

    Touching intervals merge = [[1,5],[7,10]] [OK]
Hint: Treat touching intervals as overlapping to merge boundaries [OK]
Common Mistakes:
  • Not merging intervals that only touch at boundaries
  • Merging all intervals incorrectly into one
  • Leaving intervals separate despite overlap
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