Find array pairs whose diff is a given number k
by bob m
HTML
<p id="diff">what's new</p>
<p id="numpairs">what's 2</p>
<!-- // good answer at https://stackoverflow.com/questions/9656789/find-2-numbers-in-an-unsorted-array-equal-to-a-given-sum -->
JavaScript
function findSumPairs(ary, diff){
ary.sort(function(a,b){ return a - b; });
console.log('SORTED: ' + ary + '; Ary length is: ' + ary.length);
// outer loop goes foward from 0, inner goes backward from len
// if sum of two elements less than sum input, advance first loop
// if sum is greater, advance second loop
var numPairs=0;
for (i=0; i<ary.length; i++){
for (y=ary.length-1; y>0; y--)
{ // we never want i and y to meet
if (i >= y){break;}
if (ary[i] - ary[y] > diff){
// outer+inner less than sum, advance outer
break;
}
if (ary[i] - ary[y] == diff){ // we have a match !
console.log('DIFF FOUND i y ' + i +' ' + y +' ' + ary[i] + '-' +ary[y]);
numPairs++;
}
}
}
return numPairs;
}
var myAry=[5,1,7,6,4,9,10,15];
var sum = 10;
var res=findSumPairs(myAry, sum);
document.getElementById("diff").innerHTML = "Sorted array: " + myAry + '; Ary length is: ' + myAry.length ;
document.getElementById("numpairs").innerHTML = 'num of diff Pairs = ' + res;