【发布时间】:2016-12-11 09:06:42
【问题描述】:
让我快速解释一下问题
最初来自这里:https://www.hackerrank.com/challenges/pairs
示例输入为:
5 2
1 5 3 4 2
引用上述输入
第一行:
N = 5, K = 2
其中 N 是集合中的整数个数,K 是我们要寻找的差值
第二行(作为一个数组):
[1, 5, 3, 4, 2];
数组中有多少对相差K?
示例答案: "集合中有3对相差2的整数。"
这是我正在为此做的事情,但我错过了一些东西:
function findDifference(k, nArr) {
nArr.sort((a, b) => a - b);
var pairsWithDifferenceOfK = 0;
for (var i = 0; i < nArr.length; i++) {
if (Math.abs((nArr[i] - ((nArr.length > (i + k)) ? nArr[(i + k)] : nArr[i]))) === k) {
pairsWithDifferenceOfK++;
};
}
console.log(pairsWithDifferenceOfK);
}
var K = 2;
Arr = [1, 5, 3, 4, 2];
findDifference(K, Arr);
输出:
3
当给定这些输入时,这会失败(我很好奇为什么在某些输入而不是其他输入上失败):
10 1
363374326 364147530 61825163 1073065718 1281246024 1399469912 42804763 491595254 879792181 1069262793
【问题讨论】:
-
抱歉,现在编辑
-
N的目的是什么? -
他们把它作为输入的一部分,但是由于 N 只是输入中提供的整数的数量,我只使用数组的长度作为这个值。让我编辑一下
-
在索引处使用目标差异
k的目的是什么..? -
@Redu 谢谢你的帮助!但抱歉,您能否更具体地说明您的目标差异 k 的位置?
标签: javascript algorithm