-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path2006.js
More file actions
39 lines (37 loc) · 781 Bytes
/
2006.js
File metadata and controls
39 lines (37 loc) · 781 Bytes
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
/**
* @param {number[]} nums
* @param {number} k
* @return {number}
*/
var countKDifference = function (nums, k) {
let arr = Array(101).fill(0)
let res = 0
nums.forEach(num => {
arr[num]++
})
for (let i = 1; i <= 99; i++) {
if (i + k > 100) break
if (arr[i] && arr[i + k]) {
res += arr[i] * arr[i + k]
}
}
return res
}
/*
2020/10/2
52 17
两次遍历,及时终止
使用哈希表,优化到85 20
let m = new Map()
let res = 0
nums.forEach(num => {
m.set(num, m.get(num) + 1 || 1)
})
m.forEach((val, num) => {
if (num + k > 100) return res
if (m.has(num + k)) {
res += val * m.get(num + k)
}
})
return res
*/