问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
/**
- @param {number[]} nums
- @return {number[][]}
- /
//用map方法来判断是否存在这样的三位数,a,b,c;
//第一层a=-(b+c),a是target值
//第二层b,c用map是遍历成除了a以外的其他数值
var threeSum = function(nums) {
_length=nums.length;
const map=new Map();
for(let i=0;i<_length;i++){
//使得a为target值
a=nums[i];
//数组中删除i号元素,长度跟着减1,防止重复
nums.splice(i,0);
_length=_length-1;
//i+1表示从下一位开始,防止重复
for(let j=0;j<_length;j++)
{
c=nums[j];
b=-a-c;
//判断是否存在某位元素,等于-a-nums中j号元素
if(map.has(b)){ return[a,b,c]
}
}
}
}
console.log (threeSum([-1,0,1,2,-1,-4]))运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
第一次使用a,b,c这三个变量时并没声明。比如a=nums[i]; 在for语句之前加入 let a = 0; let b = 0; let c = 0; 然后语句里只有if里边有返回,若找不到匹配的三个数就没有返回。把这两点改一下再试试。