在数组中查找两个数字,使它们相加为给定的数字

布里杰什

最简单的方法是将 for 循环嵌套在另一个循环中。

但我想以这种方式解决它“检查数组是否同时包含desiredSum-x和x”

let givenArray = [1, 2, 5, 4, 4];
let desiredSum = 7;

// nested for loop

// for (i = 0; i < givenArray.length; i++) {
//   for (j = i + 1; j < givenArray.length; j++) {
//     if (givenArray[i] + givenArray[j] == desiredSum) {
//       flag = 1;
//       console.log(givenArray[i] + " & " + givenArray[j]);
//     }
//   }
// }

// generate all possible sums from desiredSum and check if both of required numbers are available


for (i = 0; i < givenArray; i++) {
    if (givenArray.includes(i) && givenArray.includes(desiredSum-i)) {
        console.log((desiredSum-x) + ' & ' + (x))
    }
}
拉克夏·塔库尔

desiredSum - xx方法是通过实际完成的cache机制。在迭代数组时,检查当前元素与 的差异,desiredSum如果存在于 中cache,则将其添加到output数组中。否则,您会将当前数字存储在cache.

时间复杂度 - O(n)

空间复杂度 - O(n)

let givenArray = [1, 2, 5, 4, 4,3];
let desiredSum = 7;



function twoSum(desiredSum,givenArray){
let output = [];
let cache = new Set();
for (let i = 0; i < givenArray.length; i++) {
  const firstNumber = givenArray[i];
  const secondNumber = desiredSum - firstNumber;
  if(cache.has(secondNumber)){
   output.push([firstNumber,secondNumber]);
  }
  else{
  cache.add(firstNumber);
  }
}
return output;
}

const result = twoSum(desiredSum,givenArray);

console.log(result);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在数组中的两个数字之间存储数字

给定存储两个数字数字的 LinkedLists,将这些数字相加

从两个数组列表中查找最接近的数字

在两个数组中查找最接近的数字

查找数组中的数字是否在两个数字之间,并输出介于两个数字之间的值

在python中并行完成两个数字的相加

在Java中调用类将两个数字相加

查找两个数组是否在数组中重复,然后选择它们

Golang:将两个数字相加

两个数字相加而不克隆

将两个数字相加

在数组中找到两个数字的最佳方法,它们的总和是一个特定的数字

将两个数字相加即可将它们串联起来,而不是计算总和

将数字相加,直到只剩下两个数字

在 JavaScript 中计算给定数组中任意两个数字的平均值?

算法:在数组中查找单个数字

AS3-如何在数组中查找两个最大数字

练习面试问题,查找最大的一笔连续两个数字在数组的Java

如何像矩阵一样将两个数字数组彼此相加?

递归查找三个数字的组合,这些数字相加得出给定的数字

查找数组中两个数字的和是否等于k

给定一个整数数组,找到两个数字,使它们加起来成为一个特定的目标数字

在数组中查找小于或等于另一个数组中数字的数字?

在数组中查找数字(两位数)

在Python中查找值在两个数字之间的位置

通过用户输入将两个数字相加

通过递归C ++将两个数字相加

在angularJS onclick中将两个数字相加

将两个数字相加表示为链表