func findTheDistanceValue(arr1, arr2 []int, d int) (ans int) { sort.Ints(arr2) for _, x := range arr1 { i := sort.SearchInts(arr2, x - d) // if i == len(arr2) || arr2[i] > x + d { // 不存在任何元素 arr2[j] 满足 |arr1[i]-arr2[j]| <= d, 即都不在[x - d, x + d] 之间, 所以不能使用arr2[i] >= x + d ans++ } } return }
funcsearch(nums []int, target int)int { end := nums[len(nums)-1] check := func(i int)bool { x := nums[i] if x > end { return target > end && x >= target } return target > end || x >= target }
left, right := -1, len(nums)-1// 开区间 (-1, n-1) for left+1 < right { // 开区间不为空 mid := left + (right-left)/2 if check(mid) { right = mid } else { left = mid } } if nums[right] != target { return-1 } return right }