任务
给定一个已排序的整数数组arr,包含多个不同的整数(负数、正数或零)。
你的任务是找到最大的d,使得a+b+c=d,其中a、b、c和d是arr的不同元素。如果没有找到这样的元素d,则返回null。
示例:
对于arr=[2,3,5,7,12],输出应为12(此数组正确通过我的函数)
对于arr=[-100,-1,0,7,101],输出应为0(这一个未通过)
我可以检查正数,但是我的函数在处理负数时会失败。
function findD(arr) {
myArr = arr.sort((a, b) => b - a);
for (var i = 0; i < myArr.length; i++) {
for (var k = i + 1; k < myArr.length - 2; k++) {
var j = k + 1,
d = myArr.length - 1;
while (j < d) {
let sum = myArr[k] + myArr[j] + myArr[d];
if (sum == myArr[i]) {
return myArr[i];
} else if (sum < myArr[i]) {
d--;
} else if (sum > myArr[i]) {
j++;
}
}
}
}
return null
}
如何处理数组中的负数值?