问题:给定两个数组x
和y
,x
为 Alice 得分,y
为鲍勃得分。比较Alice和Bob之间的相似指数,并给出1个指向任何大于每个比较指数的指数(如果等于则没有点)。
INPUT:
x = [4,1,6]
y = [1,1,5]
预期输出:
{Alice:2, Bob: 0}
我的代码:
x = [4,1,6]
y = [1,1,5]
results = {'Alice':0, 'Bob': 0}
for (var i = 0; i < x.length; i++){
for (var j = 0; j < y.length; j++){
if (x[i] > y[j]){
results['Alice'] += 1
}else if (x[i] < y[j]){
results['Bob'] += 1
}
}
}
console.log(results)
实际输出:
{Alice: 5, Bob: 2}
问题:
我的代码在哪里出错了?
答案 0 :(得分:3)
错误是您使用第一个数组中的第一个值查看所有可能的对,第二个数据中的第二个值。但只需要比较相同位置中的值。所以你只需要一个循环:
x = [4,1,6]
y = [1,1,5]
results = {'Alice':0, 'Bob': 0}
for (var i = 0; i < x.length; i++){
if (x[i] > y[i]){
results['Alice'] += 1
}else if (x[i] < y[i]){
results['Bob'] += 1
}
}
console.log(results)
&#13;
答案 1 :(得分:1)
问题是你不应该使用嵌套循环。你在这里做的是按照以下顺序比较Alice的所有结果:
要解决此问题,请删除内部循环并j
,然后使用i
。
var x = [4, 1, 6]
var y = [1, 1, 5]
var results = {
'Alice': 0,
'Bob': 0
}
for (var i = 0; i < x.length; i++) {
if (x[i] > y[i]) {
results['Alice'] += 1
} else if (x[i] < y[i]) {
results['Bob'] += 1
}
}
console.log(results)
&#13;
答案 2 :(得分:0)
您正在将x数组的每个元素与y数组的所有元素进行比较。为了获得预期的输出,你需要比较第一个元素或数组x与数组y的第一个元素,第二个元素与第二个元素....
我希望这会有所帮助!!