JavaScript 不重复数组内元素求和

前提:

给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。

你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。

网上看了挺多方法,但是都不考虑到当一个数组内有重复值的时候,其实还是会有重复利用元素的可能性的。

解题思路:

递归+做减法。

let indexArray = [];
var twoSum = function (arr, target) {
	if(arr.length >= 2){
		arr.map((num, indexNum) => {
			arr.splice(indexNum, 1, NaN);
			arr.map((item, indexItem) => {
				if((num + item) == target){
					arr.splice(indexItem, 1, NaN);
					indexArray.push([indexNum, indexItem]);
					arguments.callee(arr, target);
				}
			})
		})
        if(indexArray.length > 0){
			return indexArray;
		}else{
			return '数组内不存在相加为' + target + '的两个元素';
		}
	}else{
		return '传入的数组长度小于2';
	}
};
console.log(twoSum([2, 7, 1, 8, 4, 5, 3, 6], 9));

/*
    返回结果如下
   [ [ 0, 1 ], [ 2, 3 ], [ 4, 5 ], [ 6, 7 ] ]
*/

 

你可能感兴趣的:(JavaScript 不重复数组内元素求和)