57 Find the Distance Value Between Two Arrays

題目

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

分析

題意:給定一個arr1數組,一個arr2數組,以及距離d;
找出使 |arr1[i]-arr2[j]| <= d 成立的 i。

先根據題意直接暴力遍歷。

class Solution {
    public int findTheDistanceValue(int[] arr1, int[] arr2, int d) {
        for(int i=0;i<arr1.length;++i){
            for(int j=0;j<arr2.length;++j){
                if(Math.abs(arr1[i]-arr2[j])<=d)
                    return i;
            }
        }
        return -1;
    }
}

他這個題意可能描述的不準確,我跑了之後答案錯誤,查看了別人的答案,思路相同,但是返回值處理不同。

class Solution {
    public int findTheDistanceValue(int[] arr1, int[] arr2, int d) {
        int res = 0;
        for (int i = 0; i < arr1.length; i++) {
            boolean pass = true;
            for (int j = 0; j < arr2.length; j++) {
                if (Math.abs(arr1[i] - arr2[j]) <= d) {
                    pass = false;
                    break;
                }
            }
            if (pass) res++;
        }
        return res;
    }
}

他這個是返回通過|arr[i]-arr[j]|>d 驗證的arr[i]個數
對於例一,[4,5,8],[4,5]通過了,所以答案是2
對於例二,[1,4,2,3],[1,2]通過了,所以答案是2

這個是我英語水平不行。。

解答

如上

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章