Kth Smallest Product of Two Sorted Arrays LeetCode solution in Java

1
class Solution {
2
static long INF = (long) 1e10;
3

4
public long kthSmallestProduct(int[] nums1, int[] nums2, long k) {
5
int m = nums1.length, n = nums2.length;
6
long lo = -INF - 1, hi = INF + 1;
7
while (lo < hi) {
8
long mid = lo + ((hi - lo) >> 1), cnt = 0;
9
for (int i : nums1) {
10
if (0 <= i) {
11
int l = 0, r = n - 1, p = 0;
12
while (l <= r) {
13
int c = l + ((r - l) >> 1);
14
long mul = i * (long) nums2[c];
15
if (mul <= mid) {
16
p = c + 1;
17
l = c + 1;
18
} else r = c - 1;
19
}
20
cnt += p;
21
} else {
22
int l = 0, r = n - 1, p = 0;
23
while (l <= r) {
24
int c = l + ((r - l) >> 1);
25
long mul = i * (long) nums2[c];
26
if (mul <= mid) {
27
p = n - c;
28
r = c - 1;
29
} else l = c + 1;
30
}
31
cnt += p;
32
}
33
}
34
if (cnt >= k) {
35
hi = mid;
36
} else lo = mid + 1L;
37
}
38
return lo;
39
}
40
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0