Skip to content

Commit b7d4b8a

Browse files
add 986
1 parent 94a1e0b commit b7d4b8a

File tree

3 files changed

+102
-0
lines changed

3 files changed

+102
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ _If you like this project, please leave me a star._ ★
130130
|989|[Add to Array-Form of Integer](https://leetcode.com/problems/add-to-array-form-of-integer/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_989.java) | |Easy| Array
131131
|988|[Smallest String Starting From Leaf](https://leetcode.com/problems/smallest-string-starting-from-leaf/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_988.java) | |Medium| Tree, DFS
132132
|987|[Vertical Order Traversal of a Binary Tree](https://leetcode.com/problems/vertical-order-traversal-of-a-binary-tree/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_987.java) | |Medium| Recursion
133+
|986|[Interval List Intersections](https://leetcode.com/problems/interval-list-intersections/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_986.java) | |Medium| Two Pointers
133134
|985|[Sum of Even Numbers After Queries](https://leetcode.com/problems/sum-of-even-numbers-after-queries/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_985.java) | |Easy| Array
134135
|979|[Distribute Coins in Binary Tree](https://leetcode.com/problems/distribute-coins-in-binary-tree/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_979.java) | |Medium| Recursion
135136
|977|[Squares of a Sorted Array](https://leetcode.com/problems/squares-of-a-sorted-array/)|[Solution](../master/src/main/java/com/fishercoder/solutions/_977.java) | |Easy| Array
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package com.fishercoder.solutions;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
/**
7+
* 986. Interval List Intersections
8+
*
9+
* Given two lists of closed intervals, each list of intervals is pairwise disjoint and in sorted order.
10+
* Return the intersection of these two interval lists.
11+
*
12+
* (Formally, a closed interval [a, b] (with a <= b) denotes the set of real numbers x with a <= x <= b.
13+
* The intersection of two closed intervals is a set of real numbers that is either empty, or can be represented as a closed interval.
14+
* For example, the intersection of [1, 3] and [2, 4] is [2, 3].)
15+
*
16+
* Example 1:
17+
* Input: A = [[0,2],[5,10],[13,23],[24,25]], B = [[1,5],[8,12],[15,24],[25,26]]
18+
* Output: [[1,2],[5,5],[8,10],[15,23],[24,24],[25,25]]
19+
* Reminder: The inputs and the desired output are lists of Interval objects, and not arrays or lists.
20+
*
21+
* Note:
22+
* 0 <= A.length < 1000
23+
* 0 <= B.length < 1000
24+
* 0 <= A[i].start, A[i].end, B[i].start, B[i].end < 10^9
25+
* NOTE: input types have been changed on April 15, 2019. Please reset to default code definition to get new method signature.
26+
* */
27+
public class _986 {
28+
public static class Solution1 {
29+
public int[][] intervalIntersection(int[][] A, int[][] B) {
30+
int i = 0;
31+
int j = 0;
32+
List<int[]> list = new ArrayList<>();
33+
while (i < A.length && j < B.length) {
34+
int start = Math.max(A[i][0], B[j][0]);
35+
int end = Math.min(A[i][1], B[j][1]);
36+
if (start <= end) {
37+
list.add(new int[]{start, end});
38+
}
39+
if (end == A[i][1]) {
40+
i++;
41+
} else {
42+
j++;
43+
}
44+
}
45+
int[][] result = new int[list.size()][2];
46+
for (int k = 0; k < list.size(); k++) {
47+
result[k] = list.get(k);
48+
}
49+
return result;
50+
}
51+
}
52+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package com.fishercoder;
2+
3+
import com.fishercoder.common.utils.CommonUtils;
4+
import com.fishercoder.solutions._986;
5+
import org.junit.BeforeClass;
6+
import org.junit.Test;
7+
8+
import static org.junit.Assert.assertEquals;
9+
10+
public class _986Test {
11+
private static _986.Solution1 solution1;
12+
private static int[][] A;
13+
private static int[][] B;
14+
private static int[][] expected;
15+
16+
@BeforeClass
17+
public static void setup() {
18+
solution1 = new _986.Solution1();
19+
}
20+
21+
@Test
22+
public void test1() {
23+
A = new int[][]{
24+
{0, 2},
25+
{5, 10},
26+
{13, 23},
27+
{24, 25}
28+
};
29+
B = new int[][]{
30+
{1, 5},
31+
{8, 12},
32+
{15, 24},
33+
{25, 26}
34+
};
35+
expected = new int[][]{
36+
{1, 2},
37+
{5, 5},
38+
{8, 10},
39+
{15, 23},
40+
{24, 24},
41+
{25, 25}
42+
};
43+
int[][] actual = solution1.intervalIntersection(A, B);
44+
CommonUtils.print2DIntArray(actual);
45+
assertEquals(expected, actual);
46+
}
47+
48+
49+
}

0 commit comments

Comments
 (0)