Golang程序 在一个数组中找到具有给定总和的配对(O(n))

例子

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

解决这个问题的方法

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

第2步: 定义一个映射变量, 类型为map[int]int。

第3步: 将给定的数组迭代为 i .

第4步: 如果 映射 sum-arr[i] 中的键不存在,那么 mapping[arr[i]]=i 。

第5步: 如果存在,则打印 “找到一对”。

第6步: 最后,打印 “没有找到一对”。

程序

package main
import "fmt"
func findSumPair(arr []int, sum int){
   mapping := make(map[int]int)
   for i:=0; i<len(arr); i++{
      if mapping[sum-arr[i]] == 0{
         mapping[arr[i]] = i
      } else {
         fmt.Printf("Pair for given sum is (%d, %d).\n", arr[mapping[sum-arr[i]]], arr[i])
         return
      }
   }
   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 (7, 8).
Pair not found in given array.