編寫一個 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.

更新於: 04-02-2021

215 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.