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