From 14af427ae4bcf0cae53fcb07fa6d060be3f61c30 Mon Sep 17 00:00:00 2001 From: kingkong1111 <49048732+kingkong1111@users.noreply.github.com> Date: Wed, 24 Jun 2020 13:11:31 +0800 Subject: [PATCH] =?UTF-8?q?Update=E5=8C=BA=E9=97=B4=E4=BA=A4=E9=9B=86?= =?UTF-8?q?=E9=97=AE=E9=A2=98Java=E7=89=88=E6=9C=AC=20(#360)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update区间交集问题Java版本 * Update区间交集问题Java版本 * Update 区间交集问题.md --- ...44\351\233\206\351\227\256\351\242\230.md" | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\214\272\351\227\264\344\272\244\351\233\206\351\227\256\351\242\230.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\214\272\351\227\264\344\272\244\351\233\206\351\227\256\351\242\230.md" index 7a5552e..d66ba25 100644 --- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\214\272\351\227\264\344\272\244\351\233\206\351\227\256\351\242\230.md" +++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\214\272\351\227\264\344\272\244\351\233\206\351\227\256\351\242\230.md" @@ -107,9 +107,45 @@ def intervalIntersection(A, B): ![labuladong](../pictures/labuladong.jpg) +[kingkong1111](https://github.com/kingkong1111)提供 Java 代码: + +```java +public int[][] intervalIntersection(int[][] A, int[][] B) { + List res = new ArrayList<>(); + if (A == null || B == null) { + return res.toArray(new int[0][]); + } + // 定义两个指针遍历两个数组 + int i =0; + int j =0; + while (i < A.length && j < B.length) { + int a1 = A[i][0]; + int a2 = A[i][1]; + int b1 = B[j][0]; + int b2 = B[j][1]; + //1 说明有重合 + if (a1 <= b2 && a2 >= b1) { + //2 重合区间:前面的最大值 到 后面的最小值 + int start = Math.max(a1, b1); + int end = Math.min(a2, b2); + res.add(new int[]{start, end}); + } + //3 哪个区间大,哪个不动,另一个指针动,看是否能扩大重合区间 + if (a2 > b2) { + j++; + } else { + i++; + } + } + return res.toArray(new int[0][]); + } +``` [上一篇:区间调度之区间合并问题](../算法思维系列/区间调度问题之区间合并.md) [下一篇:信封嵌套问题](../算法思维系列/信封嵌套问题.md) -[目录](../README.md#目录) \ No newline at end of file +[目录](../README.md#目录) + + + -- GitLab