javascript - 如何为 Two Sum javascript 问题的所有情况编写所有代码

标签 javascript algorithm

在过去的几个小时里,我一直在研究两个和的问题,但似乎无法解释只有两个数字且它们的和与第一个数字加倍相同的情况。

结果应该是 [0,1],但我得到的是 [0,0]。

let nums = [3,3];
let targetNum = 6;

function twoSum(nums, target) {

    for (let i = 0; i < nums.length; i++) {
        for (let b = i+1; b < nums.length; b++) {
            if ((nums[i] + nums[b]) == target) {
                return [nums.indexOf(nums[i]), nums.indexOf(nums[b])];
            }
        }
    }
}

console.log(twoSum(nums, targetNum))

最佳答案

二和

我的方法使用 javascript 对象并在 O(n) 时间复杂度内完成算法。

const twoSum = (nums, target) => {
  let hash = {}
  for(i=0;i<nums.length;i++) {
    if (hash[nums[i]]!==undefined) {
      return [hash[nums[i]], i];
    }
    hash[target-nums[i]] = i;
  }
};

console.log(twoSum([2,7,11,15], 9)); // example

关于javascript - 如何为 Two Sum javascript 问题的所有情况编写所有代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54104635/

相关文章:

javascript - 以编程方式创建的复选框上的 addEventListener 不起作用

JavaScript:是否允许在 `ternary` 语句中使用 `if` 语句?

java - 不同语言的相同算法的不同输出

javascript - React Router 路径变量也与其他路径一样,React 无法区分

javascript - Webpack:如何驯服不符合 npm 的 js 库

javascript - Amcharts 4 : How to highlight bar/column on click of bar/column in bar plots

algorithm - 哈密​​顿路径 - 当每个顶点只能覆盖一次时,我可以覆盖边缘两次吗?

java - 适合内存的顺序数据的 QuickSort 和 MergeSort 性能与磁盘上访问顺序数据的速度比较慢

javascript - 在 JavaScript 过滤器方法内部进行迭代

algorithm - 使用哪种数据结构