DEV Community

Dumb Down Demistifying Dev
Dumb Down Demistifying Dev

Posted on

Find The Average Pair

Multi-Pointers QUestion 2

Given a sorted array and a target average value, write a function AveragePair to determine if a pair of numbers adds up to the target average value.

Thoughts:

  • One pointer at the start of the array
  • One pointer at the end of the array
  • Since the array is sorted,
    • if calculated average pair bigger than the expected value
      • we move left pointer by 1 position to the right
    • if calculated average pair smaller than the expected value
      • we move right pointer by 1 position to the left
  • Practice both iterative and recursive methods
// Recursive method
function averagePair(sortedArr, avgNum){
    const arrLength = sortedArr.length;
    if (arrLength < 1) return false;

    function recurs(sortedArr, left, right) {
        if (left === right) return false;

        const avg = (sortedArr[left] + sortedArr[right]) / 2;
        if (avg === avgNum) return true;
        return (avg < avgNum) 
            ? recurs(sortedArr, left+=1, right)
            : recurs(sortedArr, left, right-=1);
    }

    return recurs(sortedArr, 0, arrLength - 1);
}

// Iterative method
function AveragePair(sortedArr, avgNum){
    const arrLength = sortedArr.length;
    if (arrLength < 1) return false;

    let left = 0;
    let right = arrLength - 1;
    while(right > left) {
        const avg = (sortedArr[left] + sortedArr[right]) / 2;
        if (avg === avgNum) return true;
        if (avg < avgNum) {
            left++;
        } else {
            right--;
        }
    }
    return false;
}
Enter fullscreen mode Exit fullscreen mode

Discussion (0)