1. 程式人生 > >力扣——區間列表的交集

力扣——區間列表的交集

並且 assets array star clas lis asset img amp

給定兩個由一些閉區間組成的列表,每個區間列表都是成對不相交的,並且已經排序。

返回這兩個區間列表的交集。

(形式上,閉區間 [a, b](其中 a <= b)表示實數 x 的集合,而 a <= x <= b。兩個閉區間的交集是一組實數,要麽為空集,要麽為閉區間。例如,[1, 3] 和 [2, 4] 的交集為 [2, 3]。)

示例:

技術分享圖片

輸入:A = [[0,2],[5,10],[13,23],[24,25]], B = [[1,5],[8,12],[15,24],[25,26]]
輸出:[[1,2],[5,5],[8,10],[15,23],[24,24],[25,25]]
註意:輸入和所需的輸出都是區間對象組成的列表,而不是數組或列表。

提示:

  1. 0 <= A.length < 1000
  2. 0 <= B.length < 1000
  3. 0 <= A[i].start, A[i].end, B[i].start, B[i].end < 10^9
class Solution {
    public Interval[] intervalIntersection(Interval[] A, Interval[] B) {
        List<Interval> ans = new ArrayList();
        int i = 0, j = 0;

        
while (i < A.length && j < B.length) { // Let‘s check if A[i] intersects B[j]. // lo - the startpoint of the intersection // hi - the endpoint of the intersection int lo = Math.max(A[i].start, B[j].start); int hi = Math.min(A[i].end, B[j].end);
if (lo <= hi) ans.add(new Interval(lo, hi)); // Remove the interval with the smallest endpoint if (A[i].end < B[j].end) i++; else j++; } return ans.toArray(new Interval[ans.size()]); } }

力扣——區間列表的交集