编写一个 Go 语言程序,以在数组中查找具有给定和的成对数(O(nlogn))
示例
输入数组 = [1, 3, 5, 7, 8, 9],总和 = 11 => (3, 8)
解决此问题的思路
步骤 1: 定义接受数组和总和的方法。
步骤 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--。
步骤 5: 最后,打印“未找到成对数”。
程序
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.
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程语言
C++
C#
MongoDB
MySQL
Javascript
PHP