Write a Golang program to find pairs with given sum in an array(O(nlogn))


Examples

Input Array = [1, 3, 5, 7, 8, 9], sum = 11 => (3, 8)

Approach to solve this problem

Step 1: Define a method that accepts an array and sum.

Step 2: Sort the given array, declare low:=0 and high:=size-1 variables.

Step 3: Iterate a for loop until low <= high.

Step 4: If arr[low]+arr[high] == sum, then print the elements.

Step 5: If arr[low]+arr[high] < sum, then low++. If arr[low]+arr[high] > sum, then high--.

Step 5: At the end, print “pair not found”.

Program

Live Demo

package main
import (
   "fmt"
   "sort"
)

func findSumPair(arr []int, sum int){
   sort.Ints(arr)
   low := 0
   high := len(arr) - 1
   for low <= high{
       if arr[low] + arr[high] == sum{
          fmt.Printf("Pair for given sum is (%d, %d).\n", arr[low], arr[high])
         return
      } else if arr[low] + arr[high] < sum {
         low++
      } else {
         high--
      }
    }
   fmt.Println("Pair not found in given array.")
}

func main(){
   findSumPair([]int{4, 3, 6, 7, 8, 1, 9}, 15)
   findSumPair([]int{4, 3, 6, 7, 8, 1, 9}, 100)
}

Output

Pair for given sum is (6, 9).
Pair not found in given array.

Updated on: 04-Feb-2021

177 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements