classSolution { privatedoubleget(int[] a, int x, int[] b, int y, int k) { intm= a.length, n = b.length; if (x == m) return b[y + k - 1]; if (y == n) return a[x + k - 1]; if (k == 1) return Math.min(a[x], b[y]);
intp1= Math.min(m, x + k / 2) - 1; intp2= Math.min(n, y + k / 2) - 1;
if (a[p1] <= b[p2]) return get(a, p1 + 1, b, y, k - (p1 - x + 1)); return get(a, x, b, p2 + 1, k - (p2 - y + 1)); } publicdoublefindMedianSortedArrays(int[] a, int[] b) { // k // a k / 2 // b k / 2 intm= a.length, n = b.length; intall= m + n; if (all % 2 == 1) return get(a, 0, b, 0, all / 2 + 1); doublefi= get(a, 0, b, 0, all / 2), se = get(a, 0, b, 0, all / 2 + 1); return (fi + se) / 2; } }