Javascript 数组中总和为10的所有对,平均/最佳O(n)运行时复杂度

Javascript 数组中总和为10的所有对,平均/最佳O(n)运行时复杂度,javascript,algorithm,hashmap,Javascript,Algorithm,Hashmap,我正在尝试使用javascript进行编码 我正在使用地图,并试图找到所有的对,加上10。但是,这两对没有正确打印。有些对正在打印,有些对没有打印 <script> function twoSum(nums, target_num) { if(nums.length<2){ return; } var myMap = new Map();

我正在尝试使用javascript进行编码

我正在使用地图,并试图找到所有的对,加上10。但是,这两对没有正确打印。有些对正在打印,有些对没有打印

<script>
        function twoSum(nums, target_num) {

            if(nums.length<2){
                return;
            }

            var myMap = new Map();
            var i;
            var target, val; 


            for(val of nums){
                //New change added for the recommendation of a user below
                //This makes the answer a little better
                myMap.set(val,false);
                target = target_num - val;

                if(!myMap.has(target)){ 
                    myMap.set(val,target);            
                }

                else{             
                    console.log("[" + target + "," + val +"]");           
                }                           
            }
        }
    </script>

函数twoSum(nums,target_num){
如果(nums.length尝试以下方法:

函数twoSum(nums,target_num){
如果(nums.length 0){
console.log(
myMap[target]。筛选器(j=>j>i)
.map(x=>[nums[i],target])
);
}
}                           
}
}
控制台日志(twoSum([2,4,6,7,3,2,1,9,4,1,6,4],10))

线性时间是不可能的,输出可以是二次大的,例如从样本输入[1,1,…,1,9,9,…,9],您的代码从不将6和9存储到映射中,因此您无法获得[6,4]和[9,1]我对哈希映射没有太多经验,因此我不知道如何存储[6,4]和[9,1]。另外,我也不太明白为什么我不能存储它们。你能详细说明一下吗?请查看原始代码中for循环中的if-else语句。当它从映射中找到目标时,它将只打印该对,而当前val不会存储到映射中。当到达第一个“6”时,代码只打印[4,6]然后在数组中查找下一个值。但是,映射仍然包含{2,4},因为“6”未存储到映射中。如果您试图获取所有对,则应存储当前val,无论它是否有对。