Skip to content

Latest commit

 

History

History
153 lines (126 loc) · 3.28 KB

File metadata and controls

153 lines (126 loc) · 3.28 KB

中文文档

Description

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.

 

Example 1:

Input: arr1 = [4,5,8], arr2 = [10,9,1,8], d = 2
Output: 2
Explanation: 
For arr1[0]=4 we have: 
|4-10|=6 > d=2 
|4-9|=5 > d=2 
|4-1|=3 > d=2 
|4-8|=4 > d=2 
For arr1[1]=5 we have: 
|5-10|=5 > d=2 
|5-9|=4 > d=2 
|5-1|=4 > d=2 
|5-8|=3 > d=2
For arr1[2]=8 we have:
|8-10|=2 <= d=2
|8-9|=1 <= d=2
|8-1|=7 > d=2
|8-8|=0 <= d=2

Example 2:

Input: arr1 = [1,4,2,3], arr2 = [-4,-3,6,10,20,30], d = 3
Output: 2

Example 3:

Input: arr1 = [2,1,100,3], arr2 = [-5,-2,10,-3,7], d = 6
Output: 1

 

Constraints:

  • 1 <= arr1.length, arr2.length <= 500
  • -10^3 <= arr1[i], arr2[j] <= 10^3
  • 0 <= d <= 100

Solutions

Brute-force.

Python3

class Solution:
    def findTheDistanceValue(self, arr1: List[int], arr2: List[int], d: int) -> int:
        res = 0
        for a in arr1:
            exist = False
            for b in arr2:
                if abs(a - b) <= d:
                    exist = True
                    break
            if not exist:
                res += 1
        return res

Java

class Solution {
    public int findTheDistanceValue(int[] arr1, int[] arr2, int d) {
        int res = 0;
        for (int a : arr1) {
            boolean exist = false;
            for (int b : arr2) {
                if (Math.abs(a - b) <= d) {
                    exist = true;
                    break;
                }
            }
            if (!exist) {
                ++res;
            }
        }
        return res;
    }
}

C++

class Solution {
public:
    int findTheDistanceValue(vector<int>& arr1, vector<int>& arr2, int d) {
        int res = 0;
        for (auto& a : arr1) {
            bool exist = false;
            for (auto& b : arr2) {
                if (abs(a - b) <= d) {
                    exist = true;
                    break;
                }
            }
            if (!exist) ++res;
        }
        return res;
    }
};

Go

func findTheDistanceValue(arr1 []int, arr2 []int, d int) int {
	res := 0
	for _, a := range arr1 {
		exist := false
		for _, b := range arr2 {
			if math.Abs(float64(a-b)) <= float64(d) {
				exist = true
				break
			}
		}
		if !exist {
			res++
		}
	}
	return res
}

...