我正在做LeetCode上的第一道题,两个和。我正在尝试使用哈希表来做这道题。这是我想出来的:
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]]
有我需要的索引值。我不确定为什么我会得到一个未定义的。有什么建议可以让这一切变得更好吗?
发布于 2017-04-20 14:33:17
请看代码。我删除了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))
https://stackoverflow.com/questions/43511585
复制相似问题