我在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=6
,8-3=5
,8-1=7
,8-6=2
和8-4=4
。所以,根据我的代码,我的哈希表应该是这样的:
6:0
5:1
7:2
2:3
4:4
如果哈希表中没有某些内容,我想把它扔进哈希表中。当我遇到哈希中的数字时,我返回hash[nums[i]]
和i
,因为我准备好了索引,hash[nums[i]]
具有我需要的索引值。我不确定为什么我得到一个未定义的。有什么建议让这更好吗?
答案 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))