From 1c6e61e745c8db51317547dfb86a40098bf28e2d Mon Sep 17 00:00:00 2001 From: Cool <747682928@qq.com> Date: Wed, 13 Nov 2024 16:29:49 +0800 Subject: [PATCH] =?UTF-8?q?2024/11/13=20=E7=81=B5=E8=8C=B6=E9=A2=98?= =?UTF-8?q?=E5=8D=95=20=E4=BA=8C=E5=88=86=E6=9F=A5=E6=89=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ling_cha_mount/binary_search/Num1385.java | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/main/java/com/cool/ling_cha_mount/binary_search/Num1385.java diff --git a/src/main/java/com/cool/ling_cha_mount/binary_search/Num1385.java b/src/main/java/com/cool/ling_cha_mount/binary_search/Num1385.java new file mode 100644 index 0000000..264e072 --- /dev/null +++ b/src/main/java/com/cool/ling_cha_mount/binary_search/Num1385.java @@ -0,0 +1,42 @@ +package com.cool.ling_cha_mount.binary_search; + +import java.util.Arrays; + +/** + * @author : Cool + * @date: 2024/11/13 + * 1385. 两个数组间的距离值 + */ +public class Num1385 { + public int findTheDistanceValue(int[] arr1, int[] arr2, int d) { + Arrays.sort(arr2); + int res = 0; + for (int num : arr1) { + int index = binarySearch(arr2, num); + if (index < arr2.length) { + int i = Math.abs(arr2[index] - num); + int j = Math.abs(arr2[index - 1 > -1 ? index - 1 : 0] - num); + if (i > d && j > d) { + res++; + } + } else if (Math.abs(arr2[index - 1] - num) > d) { + res++; + } + } + return res; + } + + private int binarySearch(int[] nums, int target) { + int left = 0; + int right = nums.length - 1; + while (left <= right) { + int mid = (right - left) / 2 + left; + if (target <= nums[mid]) { + right = mid - 1; + } else { + left = mid + 1; + } + } + return left; + } +}