JavaScript 中 如何在数组中找到两个值的和等于给定的值

在JavaScript中,您可以使用两种常见的方法来找到数组中两个值的和等于给定的值。

方法一:使用双重循环

function findSum(arr, target) {
    
    
  for (let i = 0; i < arr.length; i++) {
    
    
    for (let j = i + 1; j < arr.length; j++) {
    
    
      if (arr[i] + arr[j] === target) {
    
    
        return [arr[i], arr[j]];
      }
    }
  }
  return [];
}

const arr = [2, 4, 6, 8];
const target = 10;
const result = findSum(arr, target);
console.log(result); // [2, 8]

这段代码是一个函数findSum,它接受一个数组arr和一个目标值target作为参数。函数的目标是在数组中找到两个值的和等于目标值的元素,并返回这两个元素组成的数组。

函数使用了两个嵌套的循环来遍历数组。外层循环从数组的第一个元素开始,内层循环从外层循环的下一个元素开始。通过遍历数组中的每一对元素,函数判断它们的和是否等于目标值。如果找到了符合条件的一对元素,函数立即返回这两个元素组成的数组。

如果遍历完整个数组都没有找到符合条件的元素对,函数返回一个空数组[]

在代码的最后,我们定义了一个数组arr和一个目标值target,然后调用findSum函数,并将结果赋值给变量result。最后,我们使用console.log打印出结果[2, 8]

这段代码的时间复杂度为O(n^2),因为它使用了两个嵌套的循环来遍历数组。如果数组很大,性能可能会受到影响。如果需要更高效的解决方案,可以考虑使用哈希表来优化算法。

方法二:使用哈希表

function findSum(arr, target) {
    
    
  const map = new Map();
  for (let i = 0; i < arr.length; i++) {
    
    
    const complement = target - arr[i];
    if (map.has(complement)) {
    
    
      return [complement, arr[i]];
    }
    map.set(arr[i], i);
  }
  return [];
}

const arr = [2, 4, 6, 8];
const target = 10;
const result = findSum(arr, target);
console.log(result); // [2, 8]

方法一使用了双重循环,时间复杂度为O(n^2)。方法二使用了哈希表,时间复杂度为O(n)。如果数组很大,方法二的性能会更好。

工具大全:https://aiburgeon.com/siteCollection/

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_25741071/article/details/132584708
今日推荐