Q218FreeSystemVerilog
Merge inclusive overlapping intervals
Interview prompt
Question
Given a queue of inclusive [start, end] intervals, merge every overlap and return the merged intervals sorted by start.
Starting point
Question code
typedef struct {
int unsigned start_val;
int unsigned end_val;
} interval_t;
function automatic interval_t[$]
merge_intervals(interval_t intervals[$]);Reviewed example
Trace one case
Input
intervals = [[1,2], [2,4], [6,7], [8,9]]Expected output
[[1,4], [6,7], [8,9]]Inclusive ranges sharing endpoint 2 merge, while [6,7] and [8,9] remain separate because adjacency alone is not overlap.
What to cover
Requirements
- Assume every input interval satisfies start_val <= end_val.
- Merge intervals that share an endpoint, such as [1,2] and [2,4].
- Do not merge merely adjacent integer ranges such as [1,2] and [3,4].
- Return an empty queue for empty input.

