JavaScript 找到和为给定值的三个元素

JavaScript 找到和为给定值的三个元素

我们将编写一个JavaScript程序来查找和为给定值的三个元素。这个程序将使用嵌套循环来迭代输入数组,并检查是否存在和等于给定值的三个元素。我们的程序将不断搜索三个元素,直到找到或所有可能的组合都被尝试过。这个程序将以高效和直观的方式找到和为给定值的三个元素。

方法

可以按照以下步骤找到和为给定值的三个元素:

  • 将输入数组按升序排序。

  • 循环遍历数组并固定一个元素。

  • 初始化两个指针,一个指向固定元素的下一个元素,另一个指向数组的末尾。

  • 检查三个元素的和是否等于给定值。

  • 如果和小于给定值,增加左指针。

  • 如果和大于给定值,减小右指针。重复这个过程直到找到一个三个元素的和等于给定值或指针相交。

示例

给定一个整数数组,我们想要找到和为给定值的三个元素。下面是解决这个问题的JavaScript程序:

function findTriplet(arr, sum) {

   // First, we sort the array in ascending order
   arr.sort((a, b) => a - b);

   // Next, we iterate through the array with the outer loop
   for (let i = 0; i < arr.length - 2; i++) {

      // We start the inner loop from i + 1 to avoid using the same number twice
      let left = i + 1;
      let right = arr.length - 1;

      // The inner loop moves the left and right pointers towards each other
      while (left < right) {

         // If the sum of the current triplet is equal to the given sum, we have found our  solution
         if (arr[i] + arr[left] + arr[right] === sum) {
            return [arr[i], arr[left], arr[right]];
         }

         // If the sum of the current triplet is less than the given sum, we need to increase the sum

         // So, we move the left pointer to the right
         else if (arr[i] + arr[left] + arr[right] < sum) {
            left++;
         }

         // If the sum of the current triplet is greater than the given sum, we need to decrease the sum

         // So, we move the right pointer to the left
         else {
            right--;
         }
      }
   }

   // If no triplet is found, we return null
   return null;
}

// Example usage
let arr = [1, 4, 45, 6, 10, 8];
let sum = 22;
let triplet = findTriplet(arr, sum);
console.log(triplet);

说明

  • findTriplet 函数接受一个数组 arr 和一个和 sum 作为参数。

  • 首先,使用 sort 方法将数组按升序排序。

  • 然后,我们通过外循环迭代数组,使用变量i从0到 arr.length – 2for 循环。

  • 在外循环中,我们从开始,避免重复使用相同的数字。初始化两个指针 leftright ,分别为和 arr.length – 1

  • 在内循环中,我们使用一个 while 循环将左指针和右指针相向移动,直到 left 小于 right

  • while 循环中,我们检查三个数的当前和 arr[i] + arr[left] + arr[right]

  • 如果等于给定的 sum ,我们找到了解决方案,并返回三个数的数组 [arr[i], arr[left], arr[right]]

  • 如果小于给定的 sum ,我们需要增加和,所以将 left 指针向右移动,增加 left

  • 如果大于给定的 sum ,我们需要减少和

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程