JavaScript - 我的哈希表有什么问题?

时间:2017-04-20 06:14:37

标签: javascript

我在LeetCode上做了第一个问题,两个Sum。我试图使用哈希表来解决问题。这就是我想出的:

var twoSum = function(nums, target) {
  var hash = [];
  for(var i = 0; i < nums.length; i++) {
    var need = target - nums[i];
    if (!hash[need]) {
      hash[need] = i;
    } else {
      return [hash[nums[i]], i];
    }
  }  
};

当我运行我的代码时,我的答案是未定义的。我们说我有一个数组[2,3,1,6,4],我的目标是8。当我遍历数组时,我会得到8-2=68-3=58-1=78-6=28-4=4。所以,根据我的代码,我的哈希表应该是这样的:

6:0 5:1 7:2 2:3 4:4

如果哈希表中没有某些内容,我想把它扔进哈希表中。当我遇到哈希中的数字时,我返回hash[nums[i]]i,因为我准备好了索引,hash[nums[i]]具有我需要的索引值。我不确定为什么我得到一个未定义的。有什么建议让这更好吗?

1 个答案:

答案 0 :(得分:0)

请参阅代码。我删除了else部分并在结尾处返回了哈希。如果这是您正在寻找的,请告诉我。

var twoSum = function(nums, target) {
  var hash = [];
  for(var i = 0; i < nums.length; i++) {
    var need = target - nums[i];
    if (!hash[need]) {
      hash[need] = i;
    } 
  }
  return hash;
};

console.log(twoSum([2,3,1,6,4],8))