Input: [0, 3, 5, 8, 10], [6, 9, 12, 13, 14] Output: [5, 6] Input: [7.12, 15, 20, 21], [1, 5, 9, 13, 17] Output: [12, 13] Input: [6, 10, 15, 18, 21], [16, 17, 18, 23, 27] Output: [8, 8]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | package main import ( "fmt" ) func diff(n int) int { if n < 0 { return n * -1 } return n } func minDiff(a []int, b []int) (int, int) { min := -1 var result1, result2 int for i, j := 0, 0; i < len(a) && j < len(b); { newMin := diff(a[i] - b[j]) if min == -1 { min = newMin result1, result2 = a[i], b[j] } else { if newMin < min { min = newMin result1, result2 = a[i], b[j] } } if a[i] < b[j] { i++ } else { j++ } } return result1, result2 } func main() { fmt.Println(minDiff([]int{0, 3, 5, 8, 10}, []int{6, 9, 12, 13, 14})) fmt.Println(minDiff([]int{7, 12, 15, 20, 21}, []int{1, 5, 9, 13, 17})) fmt.Println(minDiff([]int{6, 10, 15, 18, 21}, []int{16, 17, 18, 23, 27})) } |