Попытка решить следующую задачу:
Учитывая массив целых чисел и целое число k, вам нужно найти количество уникальных пар k-diff в массиве. Здесь пара k-diff определяется как пара целых чисел (i, j), где i и j являются числами в массиве, а их абсолютная разница равна k.
Пример 1: Вход: [3, 1 , 4, 1, 5], k = 2 Выход: 2 Пояснение: В массиве есть две пары 2-diff: (1, 3) и (3, 5). Хотя у нас есть две единицы на входе, мы должны возвращать только количество уникальных пар.
Пример 2: Вход: [1, 2, 3, 4, 5], k = 1 Выход: 4 Пояснение: В массиве четыре пары 1-diff: (1, 2), (2, 3), (3, 4) и (4, 5).
Пример 3: Вход: [1, 3 , 1, 5, 4], k = 0 Вывод: 1 Объяснение: В массиве есть одна пара 0-diff, (1, 1).
Я написал следующий код:
const findPairs = (nums, k) => {
let count = 0
if (k < 0) return 0
if (k === 0) {
const hash = {}
for (let num of nums) {
hash[num] = (hash[num] || 0) + 1
}
nums = Object.keys(hash)
for (let num of nums) {
if (hash[num] > 1) count++
}
} else {
let numSet = new Set(nums)
nums = Array.from(numSet)
for (let num of nums) {
if (numSet.has(Math.abs(num + k))) {
count++
numSet.delete(Math.abs(num + k))
}
}
}
return count
}
Все тестовые примеры проходят, кроме последнего:
console.log(findPairs([3, 1, 4, 1, 5], 2)) //2
console.log(findPairs([1, 2, 3, 4, 5], 1)) //4
console.log(findPairs([1, 3, 1, 5, 4], 0)) //1
console.log(findPairs([1, 2, 3, 4, 5], -1)) //0
console.log(findPairs([1, 1, 1, 1, 1], 0)) //1
console.log(findPairs([1, 3, 1, 5, 4], 0)) //1
console.log(findPairs([-1, -2, -3], 1)) //2 my code returns 0 incorrectly
Нужна помощь в выяснении logi c недостаток.