onsite approach
. N-1 (N - ) . i+1. . - :
http://ideone.com/NQznBV
private static int intersect(int[] a, int alen, int[] b) {
int resLen = 0, bIndex = 0;
for (int aIndex = 0; aIndex < alen; ++aIndex) {
while (bIndex < b.length && a[aIndex] > b[bIndex]) ++bIndex;
if (bIndex == b.length) break;
if (a[aIndex] == b[bIndex]) {
a[resLen] = a[aIndex];
++resLen;
++bIndex;
}
}
return resLen;
}
private static int intersectArrays(int[][] arrays) {
int len = arrays[0].length;
for (int i = 1; i < arrays.length; ++i) {
len = intersect(arrays[0], len, arrays[i]);
}
return len;
}
public static void main (String[] args) throws java.lang.Exception
{
int[][] arr = {{1,2,3,3,4},{2,3,3,5},{1,2,3,3,5,6,7},{1,2,3,3,6,7,8,9}};
int len = intersectArrays(arr);
for (int i = 0; i < len; ++i)
System.out.print(arr[0][i] + " ");
}
.
, .
, (current).
current ( ). " ".
( ) ( ) ..
(D). O(D*N*logK), K - . , , .