How to find the pair in array whose sum is nearest to a number N in a sorted array in C#

1 Answer

0 votes
using System;

class Program
{
    static void Main() {
        int[] arr = {3, 5, 7, 12, 18, 20, 23, 27, 30};

        int size = arr.Length;
    
        int N = 22;
  
        int left = 0, right = size - 1, sum = 0;
        int nearest = Int32.MaxValue, nearest_sum = 0; 
        int paira = 0, pairb = 0;
 
        while(left < right) {
            sum = arr[left] + arr[right];
          
            if (Math.Abs(N - sum) < nearest) {
                nearest = Math.Abs(N -sum);
                nearest_sum = sum;
                paira = arr[left];
                pairb = arr[right];
            }
          
            if (sum > N)
                right--;
            else if (sum <= N)
                left++;
        }
         
        Console.WriteLine(nearest_sum);
        Console.Write("{0} {1}", paira, pairb);
    }
}




/*
run:
  
23
3 20
  
*/

 



answered Dec 9, 2021 by avibootz
...