type pair struct { _1 int _2 int } func findPairs(nums []int, k int) (cnt int) { n := len(nums) if n < 2 { return } sort.Ints(nums) m := make(map[pair]bool) fast, slow := 1, 0 for fast < n { if det := nums[fast] - nums[slow]; det == k { if _, ok := m[pair{nums[slow], nums[fast]}]; !ok { cnt++ m[pair{nums[slow], nums[fast]}] = true } fast, slow = fast+1, slow+1 } else if det < k { fast++ } else { slow++ if fast == slow { fast++ } } } return }