From d2dd3ab00aee389d98d0c9327e9988630844da12 Mon Sep 17 00:00:00 2001 From: Abhinandan <93651229+AE-Hertz@users.noreply.github.com> Date: Wed, 14 Aug 2024 13:16:15 +0530 Subject: [PATCH 1/5] feat: add solution js lc problem no. 0719 --- .../Solution.js | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 solution/0700-0799/0719.Find K-th Smallest Pair Distance/Solution.js 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..2ae5547a5130b --- /dev/null +++ b/solution/0700-0799/0719.Find K-th Smallest Pair Distance/Solution.js @@ -0,0 +1,31 @@ +/** + * @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) { + let mid = Math.floor((left + right) / 2); + 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; +} From ff5c6609cdb4c823bff622d9172aab8a15458c59 Mon Sep 17 00:00:00 2001 From: AE-Hertz Date: Wed, 14 Aug 2024 08:10:12 +0000 Subject: [PATCH 2/5] style: format code and docs with prettier --- .../0719.Find K-th Smallest Pair Distance/Solution.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) 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 index 2ae5547a5130b..5a61cca8d7ae9 100644 --- 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 @@ -4,14 +4,15 @@ * @return {number} */ function smallestDistancePair(nums, k) { - nums.sort((a, b) => a - b); + nums.sort((a, b) => a - b); const n = nums.length; let left = 0, - right = nums[n - 1] - nums[0]; + right = nums[n - 1] - nums[0]; while (left < right) { let mid = Math.floor((left + right) / 2); - let count = 0, i = 0; + let count = 0, + i = 0; for (let j = 0; j < n; j++) { while (nums[j] - nums[i] > mid) { From f8d7187ec202f2bf8bf8cc6fb4efd8a73723082f Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Wed, 14 Aug 2024 19:06:31 +0800 Subject: [PATCH 3/5] Update Solution.js --- .../0700-0799/0719.Find K-th Smallest Pair Distance/Solution.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 index 5a61cca8d7ae9..e9a48c161779c 100644 --- 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 @@ -10,7 +10,7 @@ function smallestDistancePair(nums, k) { right = nums[n - 1] - nums[0]; while (left < right) { - let mid = Math.floor((left + right) / 2); + const mid = (left + right) >> 1; let count = 0, i = 0; From 111cd72d892256f7a5929fbfb96742448ce8f880 Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Wed, 14 Aug 2024 19:07:10 +0800 Subject: [PATCH 4/5] Update README.md --- .../README.md | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) 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; +} +``` + From 967353bb00a17727296e246a02ac8fa8bad701c1 Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Wed, 14 Aug 2024 19:07:22 +0800 Subject: [PATCH 5/5] Update README_EN.md --- .../README_EN.md | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) 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; +} +``` +