986. 区间列表的交集
给定两个由一些 闭区间 组成的列表,firstList 和 secondList ,其中 firstList[i] = [starti, endi] 而 secondList[j] = [startj, endj] 。每个区间列表都是成对 不相交 的,并且 已经排序 。
返回这 两个区间列表的交集 。
形式上,闭区间 [a, b](其中 a <= b)表示实数 x 的集合,而 a <= x <= b 。
两个闭区间的 交集 是一组实数,要么为空集,要么为闭区间。例如,[1, 3] 和 [2, 4] 的交集为 [2, 3] 。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/interval-list-intersections
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
import java.util.ArrayList;
import java.util.List;
class Solution {
public int[][] intervalIntersection(int[][] firstList, int[][] secondList) {
if (firstList == null || firstList.length == 0 || secondList == null || secondList.length == 0) {
return new int[0][0];
}
List<int[]> ans = new ArrayList<>();
int p1 = 0, p2 = 0;
while (p1 < firstList.length && p2 < secondList.length) {
if (firstList[p1][0] <= secondList[p2][0] && firstList[p1][1] >= secondList[p2][0] ||
secondList[p2][0] <= firstList[p1][0] && secondList[p2][1] >= firstList[p1][0]) {
ans.add(new int[]{Math.max(firstList[p1][0], secondList[p2][0]), Math.min(firstList[p1][1], secondList[p2][1])});
}
if (firstList[p1][1] == secondList[p2][1]) {
p1++;
p2++;
} else if (firstList[p1][1] > secondList[p2][1]) {
p2++;
} else {
p1++;
}
}
return ans.toArray(new int[ans.size()][2]);
}
}
心之所向,素履以往 生如逆旅,一苇以航

浙公网安备 33010602011771号