給定兩個由一些閉區間組成的列表,每個區間列表都是成對不相交的,並且已經排序。
返回這兩個區間列表的交集。
(形式上,閉區間 [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]]
本題還是區間求解題目,理論上講應該先排序,但是題目說明給定的兩個陣列已經是有序的了。首先考慮兩個陣列的交集,因為交集情況比較多,我們可以通過取不相交集合的反得到所有相交的情況,不相交的情況只有leftb < righta || rightb < lefta
,然後取反就是相交的情況,即lefta <= rightb && righta >= leftb
。根據畫圖觀察可以發現,相交的情況中,交集滿足[math.max(lefta, leftb), math.min(righta, rightb)]
,直接將滿足條件的交集新增即可。最後考慮兩個指標的移動情況,當rightb
小於righta
的時候,直接將j
指標向後移,反之將i
指標後移,這種情況主要針對乙個區間較大,包含了幾個小區間的情況。
具體**如下:
class solution );
}//指標前移
if (righta > rightb) else
}return list.toarray(new int[list.size()]);}}
986 區間列表的交集
weekly contest 122的 區間列表的交集 給定兩個由一些閉區間組成的列表,每個區間列表都是成對不相交的,並且已經排序。返回這兩個區間列表的交集。形式上,閉區間 a,b 其中a b 表示實數x的集合,而a x b。兩個閉區間的交集是一組實數,要麼為空集,要麼為閉區間。例如,1,3 和 2...
986 區間列表的交集
給定兩個由一些 閉區間 組成的列表,firstlist 和 secondlist 其中 firstlist i starti,endi 而 secondlist j startj,endj 每個區間列表都是成對 不相交 的,並且 已經排序 返回這 兩個區間列表的交集 形式上,閉區間 a,b 其中 a...
LeetCode 986 區間列表的交集
給定兩個由一些閉區間組成的列表,每個區間列表都是成對不相交的,並且已經排序。返回這兩個區間列表的交集。形式上,閉區間 a,b 其中 a b 表示實數 x 的集合,而 a x b。兩個閉區間的交集是一組實數,要麼為空集,要麼為閉區間。例如,1,3 和 2,4 的交集為 2,3 示例 輸入 a 0,2 ...