Golang程序 在一个数组中找到具有指定总和的配对(O(nlogn))
例子
输入数组 = [1, 3, 5, 7, 8, 9], sum = 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]>sum,那么high–。
第6步: 在最后,打印 “未找到配对”。
程序
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)
}
输出
Pair for given sum is (6, 9).
Pair not found in given array.