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
}