986. Interval List Intersections

#### QUESTION:

Given two lists of closed intervals, each list of intervals is pairwise disjoint and in sorted order.

Return the intersection of these two interval lists.

(Formally, 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 is either empty, or can be represented as a closed interval. For example, the intersection of [1, 3] and [2, 4] is [2, 3].)

Example 1:

Input: A = [[0,2],[5,10],[13,23],[24,25]], B = [[1,5],[8,12],[15,24],[25,26]] Output: [[1,2],[5,5],[8,10],[15,23],[24,24],[25,25]] Reminder: The inputs and the desired output are lists of Interval objects, and not arrays or lists.

Note:

0 <= A.length < 1000 0 <= B.length < 1000 0 <= A[i].start, A[i].end, B[i].start, B[i].end < 10^9 NOTE: input types have been changed on April 15, 2019. Please reset to default code definition to get new method signature.

#### EXPLANATION:

1. 首先确定相交的最小值： 那肯定就是low = MAX（A[0],B[0]）
2. 再确定相交的最大值： 那就是high = MIN(A[1],B[1])
3. 如果low > high 就说明两者没有交集。否则就可以将结果保存到结果的list中
4. 那么就需要确定high是A的终点还是B的，如果是A的就说明A区间已经用完，需要换到下一个
5. 一直循环直到其中有一个数组结束为止

#### SOLUTION:

``````class Solution {
public int[][] intervalIntersection(int[][] A, int[][] B) {
ArrayList<int[]> result = new ArrayList<>();
int indexa = 0;
int indexb = 0;
while (indexa<A.length && indexb<B.length){
int[] tmpa = A[indexa];
int[] tmpb = B[indexb];
int low = Math.max(tmpa[0],tmpb[0]);
int high = Math.min(tmpa[1],tmpb[1]);
if(low<=high){
int[] tmp = new int[2];
tmp[0] = low;
tmp[1] = high;