列表取交集 986 區間列表的交集

2021-10-16 02:47:04 字數 1131 閱讀 3042

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

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

(形式上,閉區間 [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 ...