我一直在努力应对来自 Codility 的挑战,我不明白为什么
MinAbsSumOfTwo
挑战在 C# 中可以使用相同的算法,但在 Javascript 中却不起作用。
这里是 JS 实现结果页面的链接 (54/100)。
这里是 C# 实现结果页面的链接 (100/100)。
我尝试在我的机器中模拟
extreme_large
和 arithmetic_medium
测试,但两者都给了我预期的结果:
it('should return 1002 for arithmetic medium', () =>
{
const arithmetic = []
let value = -5010000
for(let i = 0; i < 10000; i++)
arithmetic.push(value += 1002)
assert.equal(solution(arithmetic), 1002)
})
it('should return 1999999994 for sequence of MAX_INT', () =>
{
const maxIntSequence = []
for(let i = 0; i < 100000; i++)
maxIntSequence.push(999999997)
assert.equal(solution(maxIntSequence), 1999999994)
})
如果有人能提供帮助,我真的很感激!
function solution(A) {
// write your code in JavaScript (Node.js 8.9.4)
var min =+Infinity,sum;
for(var i =0 ;i< A.length ;i++){
for(var j=0 ;j< A.length ;j++){
if(i > j) continue;
sum = Math.abs(A[i] + A[j]);
min = Math.min(sum,min);
}
}
return min;
}
let min = Math.abs(A[0]*2)
这是错误的,对于像 [1, 5] 这样的测试用例,代码将失败并返回 2。
应该是这样的
let min = Number.MAX_SAFE_INTEGER