publicint[][] intervalIntersection(int[][] A, int[][] B) { if (A == null || B == null) { returnnewint[0][]; } List<int[]> ans = new ArrayList<>(); int indexA = 0; int indexB = 0; while (indexA < A.length && indexB < B.length) { int start = Math.max(A[indexA][0], B[indexB][0]); int end = Math.min(A[indexA][1], B[indexB][1]);
if (start <= end) { ans.add(newint[]{start, end}); }
if (A[indexA][1] == end) { indexA++; } if (B[indexB][1] == end) { indexB++; } } return ans.toArray(newint[0][]); }
进一步我们使用条件运算符优化下 16 行开始的代码。
java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
publicint[][] intervalIntersection(int[][] A, int[][] B) { if (A == null || B == null) { returnnewint[0][]; } List<int[]> ans = new ArrayList<>(); int indexA = 0; int indexB = 0; while (indexA < A.length && indexB < B.length) { int start = Math.max(A[indexA][0], B[indexB][0]); int end = A[indexA][1] < B[indexB][1] ? A[indexA++][1] : B[indexB++][1];