12345678910111213141516171819202122232425262728293031 |
- 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
- }
|