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

例子

输入数组= [1、3、5、7、8、9],总和= 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("在给定数组中找不到配对。")
}

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