JavaScript 程序:计算和小于给定值的三个数的组合
我们将编写一个 JavaScript 程序来计算和小于给定值的三个数的组合的数量。这个问题可以通过对数组进行排序并使用两个指针来检查可能的组合来解决。首先,我们将数组按升序排序,然后,对于数组中的每个元素,我们将使用两个指针来检查和小于给定值的三个数的组合。此类组合的数量将是我们跟踪的计数。
此外,我们将根据三个数的和小于或等于给定值来更新计数和指针。这样,我们就可以在 O(n^2) 的时间复杂度内有效地解决问题。对于将来需要查找满足特定条件的某些组合的数量的问题,这是一个非常有用的技巧。
最后,我们将返回和小于给定值的此类三个数的组合的数量。
方法
首先,将给定的数字数组按升序排序。
初始化三个变量:left、right 和 count。
然后使用双指针方法,左指针从 0 开始,右指针从末尾开始。
对于每次迭代,计算当前三个数的组合的和(左指针指向的元素 + 右指针指向的元素 + 当前元素)。
如果和小于给定值,则递增计数器和左指针。
如果和大于给定值,则递减右指针。重复此过程,直到左指针小于右指针。
示例
这是一个完整的 JavaScript 程序示例,用于计算和小于给定值的三个数的组合的数量:
function countTriplets(arr, sum) { let count = 0; arr.sort((a, b) => a - b); // sorting the array in ascending order for (let i = 0; i < arr.length - 2; i++) { let left = i + 1; let right = arr.length - 1; while (left < right) { if (arr[i] + arr[left] + arr[right] >= sum) { right--; } else { count += right - left; left++; } } } return count; } const arr = [5, 1, 3, 4, 7]; const sum = 12; console.log(countTriplets(arr, sum));
解释
countTriplets 函数以数组 arr 和一个值 sum 作为参数。
count 变量用于跟踪和小于 sum 的三个数的组合的数量。
arr 使用 sort 函数按升序排序。
外部循环 for (let i = 0; i < arr.length - 2; i++) 遍历数组,left 和 right 指针分别初始化为 i 的下一个索引和数组的最后一个索引。
while (left < right) 循环持续进行,直到 left 指针大于或等于 right 指针。
while (left < right) 循环持续进行,直到 left 指针大于或等于 right 指针。
在 while 循环的每次迭代中,计算 arr[i]、arr[left] 和 arr[right] 的和。如果此和大于或等于 sum,则递减 right 指针。如果和小于 sum,则将 count 递增 left 和 right 指针之间剩余元素的数量,并递增 left 指针。
该函数返回 count 变量,该变量表示和小于 sum 的三个数的组合的数量。