# Solution for interview question: Merge Intervals

## 1. Understanding the Problem

- Given an array of intervals where each interval is represented as
`[start, end]`

, merge overlapping intervals. - The goal is to return a list of non-overlapping intervals that cover all intervals in the input array.

## 2. Sort Intervals by Start Time

- Sort the intervals based on their starting values.
- This will make it easier to detect overlaps by ensuring that any overlapping intervals are adjacent.

## 3. Initialize Merged Intervals List

- Create an empty list
`merged`

to store the merged intervals. - The list will eventually contain only the non-overlapping intervals.

## 4. Iterate Through Sorted Intervals

- For each interval, check if it overlaps with the last interval in the
`merged`

list. - If it does overlap, merge the intervals by extending the end of the last interval in
`merged`

. - If it doesn’t overlap, simply add it to
`merged`

.

## 5. Return Merged Intervals

- After processing all intervals, return the
`merged`

list which contains only non-overlapping intervals.

## 6. Consider Edge Cases

- Edge cases include:
- Only one interval, which should be returned as-is.
- Non-overlapping intervals, where each interval is added to
`merged`

without modification. - Intervals that completely overlap each other.