1385.两个数组间的间隔值(javascript)1385.FindtheDistanceValueBetweenTwoArrays

原创
小哥 3年前 (2022-11-10) 阅读数 8 #大杂烩

给你两个整数数组 arr1 , arr2 和一个整数 d ,请在两个数组之间返回。 距离值 。

距离值” 为满足此距离要求而定义的图元数:对于图元 arr1[i] ,没有元素 arr2[j] 满足 |arr1[i]-arr2[j]| <= d 。

Given two integer arrays arr1 and arr2, and the integer d, return the distance value between the two arrays.

The distance value is defined as the number of elements arr1[i] such that there is not any element arr2[j] where |arr1[i]-arr2[j]| <= d.

示例 1:

输入:arr1 = [4,5,8], arr2 = [10,9,1,8], d = 2
输出:2
解释:
对于 arr1[0]=4 我们有:
|4-10|=6 > d=2 
|4-9|=5 > d=2 
|4-1|=3 > d=2 
|4-8|=4 > d=2 
所以 arr1[0]=4 满足距离要求

对于 arr1[1]=5 我们有:
|5-10|=5 > d=2 
|5-9|=4 > d=2 
|5-1|=4 > d=2 
|5-8|=3 > d=2
所以 arr1[1]=5 也满足距离要求

对于 arr1[2]=8 我们有:
|8-10|=2 <= d=2
|8-9|=1 <= d=2
|8-1|=7 > d=2
|8-8|=0 <= d=2
存在距离小于或等于 2 的情况,不满足距离要求 

故而只有 arr1[0]=4 和 arr1[1]=5 两个满足距离要求,距离值为 2

示例 2:

输入:arr1 = [1,4,2,3], arr2 = [-4,-3,6,10,20,30], d = 3
输出:2

示例 3:

输入:arr1 = [2,1,100,3], arr2 = [-5,-2,10,-3,7], d = 6
输出:1

提示:

  • 1 <= arr1.length, arr2.length <= 500
  • -10^3 <= arr1[i], arr2[j] <= 10^3
  • 0 <= d <= 100
  1. 不能按长度优化两个数组,也不能更改遍历顺序。
  2. Math.abs(arr1[i] - arr2[j]) > d 很多,只需要找到Math.abs(arr1[i] - arr2[j]) <= d,储存在newMap,退出arr2循环,优化操作流程
  3. 无法使用的map存储的原因是arr1可以有相同的号码,map不会重复

    var findTheDistanceValue = function (arr1, arr2, d) { let len1 = arr1.length let len2 = arr2.length let newMap = [] for (let i = 0; i < len1; i++) { for (let j = 0; j < len2; j++) { if (Math.abs(arr1[i] - arr2[j]) <= d) { newMap.push(arr1[i]) break } } } return len1 - newMap.length };

leetcode: https://leetcode-cn.com/problems/find-the-distance-value-between-two-arrays/

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除