From 5331e3c5b4e86f602c2209f9fac0a535520971e9 Mon Sep 17 00:00:00 2001 From: Cool <747682928@qq.com> Date: Mon, 18 Nov 2024 18:04:40 +0800 Subject: [PATCH] =?UTF-8?q?2024/11/18=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/Num2563.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/main/java/com/cool/ling_cha_mount/binary_search/Num2563.java diff --git a/src/main/java/com/cool/ling_cha_mount/binary_search/Num2563.java b/src/main/java/com/cool/ling_cha_mount/binary_search/Num2563.java new file mode 100644 index 0000000..51c6927 --- /dev/null +++ b/src/main/java/com/cool/ling_cha_mount/binary_search/Num2563.java @@ -0,0 +1,31 @@ +package com.cool.ling_cha_mount.binary_search; + +import java.util.Arrays; + +public class Num2563 { + + public long countFairPairs(int[] nums, int lower, int upper) { + long res = 0; + Arrays.sort(nums); + for (int i = 0; i < nums.length; i++) { + int m = lowerBound(nums, i, upper - nums[i] + 1); + int n = lowerBound(nums, i, lower - nums[i]); + res += m - n; + } + return res; + } + + private int lowerBound(int[] nums, int right, int target) { + int left = -1; + while (left + 1 < right) { + int mid = (left + right) >>> 1; + if (nums[mid] < target) { + left = mid; + } else { + right = mid; + } + } + return right; + } + +}