在对 coderbyte 进行挑战时,我找到了其他人的解决方案。然而,他的代码不适用于其中一个测试用例,但我不明白为什么。
挑战信息:输入是一个由 2 个字符串组成的数组,第一个字符串包含 2 个数字,表示秤两侧的权重。第二个字符串包含您可以用来尝试平衡秤的权重。目标:用最少的权重(最大 2)平衡秤并输出您使用的权重。
代码输出 1,6,它确实平衡了秤,但秤也可以仅通过一个重量来平衡, 5. 为什么第一个“返回”没有脱离函数?
function ScaleBalancing(strArr) {
const w1 = JSON.parse(strArr[0])[0];
const w2 = JSON.parse(strArr[0])[1];
let weights = JSON.parse(strArr[1]);
for (let i = 0; i < weights.length; i++) {
if (w1 + weights[i] === w2 || w2 + weights[i] === w1) {
return '' + weights[i]; // should return 5 and break out of function right?
}
//if this for loop is omitted the function returns 5
for (let j = i + 1; j < weights.length; j++) {
if (w1 + weights[i] + weights[j] === w2 ||
w2 + weights[i] + weights[j] === w1 ||
w1 + weights[i] === w2 + weights[j] ||
w2 + weights[i] === w1 + weights[j]) {
return '' + weights[i] + ',' + weights[j]; //this returns 1,6
}
}
}
return 'not possible';
}
// keep this function call here
ScaleBalancing(["[6, 1]", "[1, 10, 6, 5]"]);
烙印99
相关分类