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 ] ]
*/

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值