编写Golang程序以在数组中找到具有给定总和的对(O(nlogn))

例子

输入数组= [1、3、5、7、8、9],总和= 11 =>(3,8)

解决这个问题的方法

步骤1: 定义一个接受数组和sum的方法

步骤2: 对给定的数组进行排序,声明low:= 0和high:= size-1变量。

步骤3:迭代for循环,直到low <= high。

步骤4:如果arr [low] + arr [high] == sum,则打印元素。

步骤5:如果arr [low] + arr [high] <sum,则为low ++。如果arr [low] + arr [high]>和,则为high--。

步骤5:最后,打印“ pair not found”。

程序

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("在给定数组中找不到配对。")
}

func main(){
   findSumPair([]int{4, 3, 6, 7, 8, 1, 9}, 15)
   findSumPair([]int{4, 3, 6, 7, 8, 1, 9}, 100)
}
输出结果
Pair for given sum is (6, 9).
在给定数组中找不到配对。