Find Pair of Elements in Array whose Sum is Equal to given number. This is another very tricky/good question generally asked in technical interview. Given array might be sorted or unsorted it depends on the interviewer.

The problem statement is, given a **sorted array**, you have to find the pair of elements in an array, whose sum is equal to the given number. You have to **find only one pair** whose sum is equal to given number.

The first solution comes in mind, take one number and loop through the array to check if the sum of two number is equal to the input value. You’ll get the result through this method but the time complexity of this solution is O(n^2). Let’s check the better solution for this problem.

Programming Objective Question

**Algorithm**:

1. Take two indexes and initialize with first and last index of an array. So that we can start from both the ends.

1 2 | first = 0; // Assign to zeroth element of an array last = arr_size -1; // Assign last element of an array |

2. Run a loop and check the condition first < last.

1 2 | If (arr[first] + arr[last] == num) then print numbers and break Else if( arr[first] + arr[last] < num ) then first++ Else if( arr[first] + arr[last] > num) then last-- |

## Program to Find Find Pair of Elements of an Array Whose Sum is Equal to Given Number

We already discuss the algorithm, to find the pair of elements from sorted array. Here is the c code.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #include <stdio.h> void main(){ int arr[] = {1,2,5,6,8,9}; int num = 8; int first = 0; int last = 5; while (first < last){ if(arr[first] + arr[last] ==num){ printf("The number is %d and %d \n",arr[first],arr[last]); break; }else if(arr[first] + arr[last] < num){ first++; }else if(arr[first] + arr[last] > num){ last--; } } } |

In the above question array is sorted, but if it was unsorted then sort the array first. Then find the pair of elements.