// BF time: O(m * n) space: O(1) publicstaticintfindTheDistanceValue_bf(int[] arr1, int[] arr2, int d){ int ans = 0; for (int x : arr1) { boolean flag = true; for (int y : arr2) { if (Math.abs(x - y) <= d) { flag = false; } }
publicintfindTheDistanceValue(int[] arr1, int[] arr2, int d){ Arrays.sort(arr2); int ans = 0; for (int x : arr1) { int low = x - d; int high = x + d; if (!binarySearch(arr2, low, high)) { ans++; } }
return ans; }
publicbooleanbinarySearch(int[] arr, int low, int high){ int left = 0; int right = arr.length - 1; while (left <= right) { int mid = left + (right - left) / 2; if (arr[mid] >= low && arr[mid] <= high) { returntrue; } elseif (arr[mid] < low) { left = mid + 1; } elseif (arr[mid] > high) { right = mid - 1; } }