1885. Count Pairs in Two Arrays
- User binary search to locate the lower bound of the region, where add upon the current index, is greater than 0
class Solution:
def countPairs(self, nums1: List[int], nums2: List[int]) -> int:
nums = [x - y for x, y in zip(nums1, nums2)]
nums.sort()
total = 0
n = len(nums) - 1
for i, num in enumerate(nums):
if num > 0:
total += n - i
continue
l, r = i + 1, n
result = -1
while l <= r:
m = (l + r) // 2
if nums[m] + num <= 0:
l = m + 1
else:
if m == i + 1 or nums[m - 1] + num <= 0:
result = m
break
else:
r = m - 1
if result != -1:
total += n - result + 1
return total