/** * * @param numbers int整型一维数组 * @param target int整型 * @return int整型一维数组 */ function twoSum( numbers , target ) { // write code here let arr = numbers,arr1 = []; try { arr.map((ele,k) => { arr.map((ment,y) => { if(ele+ment == target&&k!=y){ console.log(ele,k,ment,y) arr1.push(k+1) arr1.push(y+1) throw new Error('end') } }); }); } catch (e) { if(e == 'end'){ return; } } return arr1; } module.exports = { twoSum : twoSum };
以上是使用es6新增的map的方法,可以把map换成forEach,some这些,都是ok的,因为forEach和map都是不能跳出循环的,里面写了break会报错,但是可以些return,但是实际效果是只是阻止了return之下的代码不会执行(单次的),并不是跳出循环,所以需要使用try catch跳出循环。
下面是最简单粗暴的方法,双循环
/** * * @param numbers int整型一维数组 * @param target int整型 * @return int整型一维数组 */ function twoSum( numbers , target ) { // write code here let arr = numbers,arr1 = []; for(let i =0;i<arr.length;i++){ for(let j=1;j<arr.length;j++){ if(arr[i]+arr[j]==target&&i!=j){ console.log(arr[i],i,arr[j],j) arr1.push(i+1) arr1.push(j+1) return arr1; } } } } module.exports = { twoSum : twoSum };每次找js题解都没有,大佬们加油啊!淦它