Warning: session_start(): open(/var/lib/php/sessions/sess_ar7o016m7tb83h18ekaomd46a6, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
scope intersectSortedIntArrays.
// may return null when result is empty
static int[] intersectSortedIntArrays(int[] a, int[] b, IntBuffer buf default null) {
int i = 0, j = 0, la = lIntArray(a), lb = lIntArray(b);
// swap if a is longer than b
if (la > lb) {
int[] temp = a; a = b; b = temp;
int temp2 = la; la = lb; lb = temp2;
}
// special case zero elements
if (la == 0) null;
// special case one element
if (la == 1)
ret Arrays.binarySearch(b, a[0]) >= 0 ? a : null;
if (buf == null) buf = new IntBuffer; else buf.reset();
recurse(a, b, buf, 0, la, 0, lb);
ret buf.toArray();
}
svoid #recurse(int[] a, int[] b, IntBuffer buf, int aFrom, int aTo, int bFrom, int bTo) {
if (aFrom >= aTo || bFrom >= bTo) ret; // nothing to do
// start in the middle of a, search this element in b
int i = (aFrom+aTo)/2;
int x = a[i];
int j = Arrays.binarySearch(b, bFrom, bTo, x);
if (j >= 0) {
// element found
recurse(a, b, buf, aFrom, i, bFrom, j);
buf.add(x);
recurse(a, b, buf, i+1, aTo, j+1, bTo);
} else {
j = -j-1;
recurse(a, b, buf, aFrom, i, bFrom, j);
recurse(a, b, buf, i+1, aTo, j, bTo);
}
}
end scope