编写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:最后,打印“pairnotfound”。
程序
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). 在给定数组中找不到配对。
热门推荐
1 训练狗狗基础
2 怎么训练狗狗笑
3 怎么训练狗狗卧下
4 上海狗狗训练基地
5 训练狗狗排便
6 狗狗基础训练
8 如何训练狗狗装死
9 狗狗站姿训练
10 狗狗训练用品
11 训练狗狗吧
12 狗狗要怎么训练
13 怎么训练狗狗玩球
14 训练狗狗唤回
15 狗狗训练躺下
16 狗狗训练指令
17 狗狗的训练技巧
18 狗狗不好训练