> For the complete documentation index, see [llms.txt](https://code-snippets.hbamithkumara.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://code-snippets.hbamithkumara.com/leetcode/problems/901-1000/interval-list-intersections.md).

# 986. Interval List Intersections

### Description

You are given two lists of closed intervals, `firstList` and `secondList`, where `firstList[i] = [starti, endi]` and `secondList[j] = [startj, endj]`. Each list of intervals is pairwise **disjoint** and in **sorted order**.

Return *the intersection of these two interval lists*.

A **closed interval** `[a, b]` (with `a < b`) denotes the set of real numbers `x` with `a <= x <= b`.

The **intersection** of two closed intervals is a set of real numbers that are either empty or represented as a closed interval. For example, the intersection of `[1, 3]` and `[2, 4]` is `[2, 3]`.

### Constraints

* `0 <= firstList.length, secondList.length <= 1000`
* `firstList.length + secondList.length >= 1`
* `0 <= starti < endi <= 109`
* `endi < starti+1`
* `0 <= startj < endj <= 109`
* `endj < startj+1`

### Approach

### Links

* GeeksforGeeks
* [Leetcode](https://leetcode.com/problems/interval-list-intersections/)
* ProgramCreek
* [YouTube](https://youtu.be/Qh8ZjL1RpLI)

### **Examples**

{% tabs %}
{% tab title="Example 1" %}
**Input:** firstList = \[\[0, 2], \[5, 10], \[13, 23], \[24, 25]], secondList = \[\[1, 5], \[8, 12], \[15, 24], \[25, 26]]

**Output:** \[\[1, 2], \[5, 5], \[8, 10], \[15, 23], \[24, 24], \[25, 25]]

<div align="left"><img src="https://1091135627-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MEmU-aGQcUvtjjAH8_3%2F-MTgCaHJ6EehyNmgGnNo%2F-MTgDDYYZXUbd5FUnU6v%2Fimage.png?alt=media&amp;token=517918a6-806d-4497-bded-eba97a7f09f2" alt=""></div>
{% endtab %}

{% tab title="Example 2" %}
**Input:** firstList = \[\[1, 3], \[5, 9]], secondList = \[]

**Output:** \[]
{% endtab %}

{% tab title="Example 3" %}
**Input:** firstList = \[], secondList = \[\[4, 8], \[10, 12]]

**Output:** \[]
{% endtab %}

{% tab title="Example 4" %}
**Input:** firstList = \[\[1, 7]], secondList = \[\[3, 10]]

**Output:** \[\[3, 7]]
{% endtab %}
{% endtabs %}

### **Solutions**

{% tabs %}
{% tab title="Solution 1" %}

```java
/**
 * Time complexity : O(M+N), where M, N are the lengths of A and B respectively.
 * Space complexity : O(M+N), the maximum size of the answer.
 */

class Solution {
    public int[][] intervalIntersection(int[][] firstList, int[][] secondList) {
        List<int[]> resultList = new ArrayList<int[]>();
        
        int m = firstList.length, n = secondList.length, i = 0, j = 0;
        
        while(i < m && j < n) {
            int low = Math.max(firstList[i][0], secondList[j][0]);
            int high = Math.min(firstList[i][1], secondList[j][1]);
            
            if(low <= high) {
                resultList.add(new int[]{low, high});
            }
            
            if(firstList[i][1] < secondList[j][1]) {
                i++;
            } else {
                j++;
            }
        }
        
        return resultList.toArray(new int[resultList.size()][2]);
    }
}
```

{% endtab %}
{% endtabs %}

### **Follow up**

*
