diff --git a/solution/0700-0799/0719.Find K-th Smallest Pair Distance/README.md b/solution/0700-0799/0719.Find K-th Smallest Pair Distance/README.md index 67b38127c0a8a..a077238b27a81 100644 --- a/solution/0700-0799/0719.Find K-th Smallest Pair Distance/README.md +++ b/solution/0700-0799/0719.Find K-th Smallest Pair Distance/README.md @@ -226,6 +226,43 @@ function smallestDistancePair(nums: number[], k: number): number { } ``` +#### JavaScript + +```js +/** + * @param {number[]} nums + * @param {number} k + * @return {number} + */ +function smallestDistancePair(nums, k) { + nums.sort((a, b) => a - b); + const n = nums.length; + let left = 0, + right = nums[n - 1] - nums[0]; + + while (left < right) { + const mid = (left + right) >> 1; + let count = 0, + i = 0; + + for (let j = 0; j < n; j++) { + while (nums[j] - nums[i] > mid) { + i++; + } + count += j - i; + } + + if (count >= k) { + right = mid; + } else { + left = mid + 1; + } + } + + return left; +} +``` + diff --git a/solution/0700-0799/0719.Find K-th Smallest Pair Distance/README_EN.md b/solution/0700-0799/0719.Find K-th Smallest Pair Distance/README_EN.md index d09dbe355c366..b4bcb86be3b05 100644 --- a/solution/0700-0799/0719.Find K-th Smallest Pair Distance/README_EN.md +++ b/solution/0700-0799/0719.Find K-th Smallest Pair Distance/README_EN.md @@ -220,6 +220,43 @@ function smallestDistancePair(nums: number[], k: number): number { } ``` +#### JavaScript + +```js +/** + * @param {number[]} nums + * @param {number} k + * @return {number} + */ +function smallestDistancePair(nums, k) { + nums.sort((a, b) => a - b); + const n = nums.length; + let left = 0, + right = nums[n - 1] - nums[0]; + + while (left < right) { + const mid = (left + right) >> 1; + let count = 0, + i = 0; + + for (let j = 0; j < n; j++) { + while (nums[j] - nums[i] > mid) { + i++; + } + count += j - i; + } + + if (count >= k) { + right = mid; + } else { + left = mid + 1; + } + } + + return left; +} +``` + diff --git a/solution/0700-0799/0719.Find K-th Smallest Pair Distance/Solution.js b/solution/0700-0799/0719.Find K-th Smallest Pair Distance/Solution.js new file mode 100644 index 0000000000000..e9a48c161779c --- /dev/null +++ b/solution/0700-0799/0719.Find K-th Smallest Pair Distance/Solution.js @@ -0,0 +1,32 @@ +/** + * @param {number[]} nums + * @param {number} k + * @return {number} + */ +function smallestDistancePair(nums, k) { + nums.sort((a, b) => a - b); + const n = nums.length; + let left = 0, + right = nums[n - 1] - nums[0]; + + while (left < right) { + const mid = (left + right) >> 1; + let count = 0, + i = 0; + + for (let j = 0; j < n; j++) { + while (nums[j] - nums[i] > mid) { + i++; + } + count += j - i; + } + + if (count >= k) { + right = mid; + } else { + left = mid + 1; + } + } + + return left; +}