1385. Find the Distance Value Between Two Arrays

26 年 2 月 25 日 星期三
207 字
2 分钟

1385. Find the Distance Value Between Two Arrays

Screenshot 2026-02-25 at 10.35.04 pm

遍历 arr1,设 x=arr1[i]。我们要判断在 arr2 中是否存在元素,在闭区间 [xd,x+d] 中。

排序arr2

考虑 [x−d,x+d] 中的第一个数(最左边的数),也就是在 arr2中二分查找 ≥x−d 的最小的数 y。如果 y 不存在,或者 y>x+d,则说明没有在 [x−d,x+d] 中的元素,符合题目要求,把答案加一。

js
var findTheDistanceValue = function (arr1, arr2, d) {
  const binarySearch = (left, right, target) => {
    const mid = Math.floor((left + right) / 2)
    if (left === right) {
      return mid
    }
    if (arr2[mid] < target) {
      return binarySearch(mid + 1, right, target)
    } else if (arr2[mid] > target) {
      return binarySearch(left, mid, target)
    } else {
      return mid
    }
  }
  arr2.sort((a, b) => a - b)
  let ans = 0
  for (const i of arr1) {
    const min = i - d
    const left = binarySearch(0, arr2.length, min)
    if (left === arr2.length || arr2[left] > i + d) {
      ans++
    }
  }
  return ans
}

文章标题:1385. Find the Distance Value Between Two Arrays

文章作者:Sirui Chen

文章链接:https://blog.siruichen.me/posts/1385_find_the_distance_value_between_two_arrays[复制]

最后修改时间:


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。