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
Ideas of solving a problem
Obviously, the question is to determine whether the absolute value of the difference between arr1 and arr2 conforms to the definition of distance.If <=d occurs, we can ignore this judgment and directly judge the next comparison.Therefore, we can use a double loop, in case of an undefined jump, and execute the next loop and increment the value of count by one.When the value of count is the same as the length of the second array, add 1 to res.And every time you execute a number in arr1, clear count to 0.
The time complexity of this string of code is O(n^2), and space complexity is O(n). Memory consumption is 3.8mb.
Code
package main
import (
"fmt"
)
func main(){
arr1 := [] int {4,-3,-7,0,-10}
arr2 := [] int {10}
d := 69
fmt.Println(findTheDistanceValue(arr1,arr2,d))
}
func findTheDistanceValue(arr1 []int, arr2 []int, d int) int {
res := 0
for i:=0;i<=len(arr1)-1;i++ {
count := 0
for j:=0;j<=len(arr2)-1;j++{
if abs(arr1[i]-arr2[j])<=d {
count=0
break
}
count++
}
if count==len(arr2) {
res++
}
}
return res
}
func abs(num int) int {
if num < 0 {
return -num
}
return num
}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-the-distance-value-between-two-arrays