在过去的几个小时里,我一直在研究两个和的问题,但似乎无法解释只有两个数字且它们的和与第一个数字加倍相同的情况。
结果应该是 [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/