986. Interval List Intersections
Решение задачи 986 “Interval List Intersections” с LeetCode.
Условие задачи
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].)
Даны два списка интервалов, каждый список содержит непересекающиеся элементы отсортированные по возврастанию.
Необходимо вернуть пересечение этих двух списков.
пример 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.
ограничения
- 0 <=
A.length
< 1000 - 0 <=
B.length
< 1000 - 0 <=
A[i].start
,A[i].end
,B[i].start
,B[i].end
< 10^9
Решение
Два итератора
Создаем результирующий массив res
.
Создаем два итератора ( один для массива A
– adx
, второй для B
– bdx
).
Идем в цикле с условием , что adx
и bdx
не дошли до конца ( когда закончился один из массивов – значит дальше нет возможных пересечений ).
На каждой итерации цикла считаем start
и end
предпологаемого массива:
start
– как максимальное из начала двух отрезков изA
иB
end
– как минимальное из концов двух отрезков изA
иB
Если start
<= end
, то такой отрезов существует и можно его добавить в результирующий массив.
Проверяем какой и отрезков раньше закончился, и сдвигаем итератор этого отрезка на следующий.
|
|