给你两个下标从 0 开始的整数数组 nums1
和 nums2
,两个数组的大小都为 n
,同时给你一个整数 diff
,统计满足以下条件的 数对 (i, j)
:
-
0 <= i < j <= n - 1
且 -
nums1[i] - nums1[j] <= nums2[i] - nums2[j] + diff
.
请你返回满足条件的 数对数目 。
移项:
nums1[i] - nums2[i] <= nums1[j] - nums2[j] + diff
令nums1[i]-nums2[i]为s,s[i]<=s[j]+diff (j>i)
问题转为:固定j,求j前面有多少个数小于等于s[j]+diff
有序数组+二分查找:
从左向右遍历,维护一个有序列表,在有序列表中查找有多少个元素小于等于s[j]+diff
用python的sortedList+bisect_right(找到小于等于目标值的个数)