Least Pair

Run Settings
LanguageGo
Language Version
Run Command
package main import ( "fmt" "math" ) func FindLeaseDiff(a []int, b[]int) []int { i, j, m := 0, 0, 0 la, lb := len(a), len(b) var r []int for { av := a[i] bv := b[j] if av == bv { return []int{av, bv, 0} } // get the distance d := int(math.Abs(float64(av-bv))); // since we're just starting, set m to the first diff if i == 0 && j == 0 { m = d r = []int{av, bv, m} } if m > d { m = d r = []int{av, bv, m} } // if a[i] < b[j], increment the smaller a. if av < bv { i++ } else if av > bv { j++ } if i >= la || j >= lb { break } } return r } func main() { { a := []int{1, 2, 3, 4} b := []int{4} r := FindLeaseDiff(a, b) fmt.Printf("Diff: %d, %d = %d\n", r[0], r[1], r[2]) } { a := []int{1, 7, 9} b := []int{4, 5, 11} r := FindLeaseDiff(a, b) fmt.Printf("Diff: %d, %d = %d\n", r[0], r[1], r[2]) } { a := []int{3, 4, 7} b := []int{4, 6, 10} r := FindLeaseDiff(a, b) fmt.Printf("Diff: %d, %d = %d\n", r[0], r[1], r[2]) } { a := []int{30, 40, 71, 86} b := []int{25, 88} r := FindLeaseDiff(a, b) fmt.Printf("Diff: %d, %d = %d\n", r[0], r[1], r[2]) } { a := []int{-10, 50, 171} b := []int{15, 86, 93} r := FindLeaseDiff(a, b) fmt.Printf("Diff: %d, %d = %d\n", r[0], r[1], r[2]) } }
Editor Settings
Theme
Key bindings
Full width
Lines