我有一个像这样的数组:
[20,40,60,60,20]
要求是:对于任意两个数进行求和,如果结果可以被60整除,则计数1。因此,这个数组应该返回3对数字(20,40),(40,20),(60,60)。
这是我写的代码,但它给了我4而不是3。
这是我写的代码,但它给了我4而不是3。
function countPlayList (array) {
let count = 0;
for (let i = 0; i < array.length-1; i++) {
for (let j = 0; j < array.length-1; j++) {
let a = array[i];
let b = array[j];
if (checkPlayTime(a, b) && notDuplicate(i, j)) {
count++;
}
}
}
return count;
}
function checkPlayTime (a, b) {
return Number.isInteger((a + b)/60);
}
function notDuplicate (x, y) {
return x !== y ? true : false;
}
我这里有什么遗漏吗?
notDuplicate()
函数中[30, 30]
的返回值是1,还是不是?这可能与您的for
循环中的条件有关。您可能需要考虑在每个循环中需要检查哪些元素。 - Andreasarr.map(e => e % 60).reduce((p, c) => { p.n += p[(60 - c) % 60] || 0; p[c] = (p[c] || 0) + 1; return p; }, { n: 0 }).n
- ASDFGerte