Algorithms: Pairwise
This commit is contained in:
		
							parent
							
								
									96a5e6bff1
								
							
						
					
					
						commit
						3e3dce5f4a
					
				
							
								
								
									
										30
									
								
								Algorithms/pairwise.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								Algorithms/pairwise.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,30 @@
 | 
			
		||||
// https://www.freecodecamp.org/learn/coding-interview-prep/algorithms/pairwise
 | 
			
		||||
 | 
			
		||||
function pairwise(arr, sum) {
 | 
			
		||||
  const arr2 = arr.map((num, index) => ({ num: num, index: index }));
 | 
			
		||||
  arr2.sort(({ num: numA, index: indexA }, { num: numB, index: indexB }) => {
 | 
			
		||||
    if (numA === numB) {
 | 
			
		||||
      return indexA - indexB;
 | 
			
		||||
    } else {
 | 
			
		||||
      return numA - numB;
 | 
			
		||||
    }
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  let [i, reverseI, pairsIndexSum] = [0, arr2.length - 1, 0];
 | 
			
		||||
  while (i < reverseI) {
 | 
			
		||||
    if (arr2[i].num + arr2[reverseI].num === sum) {
 | 
			
		||||
      if (arr2[i].num === arr2[reverseI].num) {
 | 
			
		||||
        pairsIndexSum += arr2[i++].index + arr2[i++].index;
 | 
			
		||||
      } else {
 | 
			
		||||
        pairsIndexSum += arr2[i++].index + arr2[reverseI--].index;
 | 
			
		||||
      }
 | 
			
		||||
    } else if (arr2[i].num + arr2[reverseI].num < sum) {
 | 
			
		||||
      i++;
 | 
			
		||||
    } else {
 | 
			
		||||
      reverseI--;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  return pairsIndexSum;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
console.log(pairwise([1, 1, 1], 2));
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user