Javascript 我如何通过这个算法挑战?
我正在处理freecodecamp的基本算法挑战。挑战在于返回数组中的最大数。这是密码Javascript 我如何通过这个算法挑战?,javascript,algorithm,Javascript,Algorithm,我正在处理freecodecamp的基本算法挑战。挑战在于返回数组中的最大数。这是密码 function largestOfFour(arr) { // You can do this! let largestWord = [0,0,0,0]; for(let i = 0; i < arr.length; i++) { for(let j = 0; j < arr[i].length; j++) { if(arr[i][j] > largest
function largestOfFour(arr) {
// You can do this!
let largestWord = [0,0,0,0];
for(let i = 0; i < arr.length; i++) {
for(let j = 0; j < arr[i].length; j++) {
if(arr[i][j] > largestWord[i]) {
largestWord[i] = arr[i][j];
}
}
}
return largestWord;
}
largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
我通过了三项标准:
最大的四个[[4,5,1,3]、[13,27,18,26]、[32,35,37,39]、[10001001857,1]]应该返回一个数组。
通过
最大的四个[[13,27,18,26],[4,5,1,3],[32,35,37,39],[10001001857,1]]应该返回[27,5,391001]。
通过
最大的四个[[4,9,1,3]、[13,35,18,26]、[32,35,97,39]、[10000001001857,1]]应该返回[9,35,971000000]
除了最大的四个[[17,23,25,12],[25,7,34,48],[4,-10,18,21],-72,-3,-17,-10]]外,所有人都应该返回[25,48,21,-3]
我哪里出错了?看来你可以用和轻松地完成这项任务 函数最大的四个数组{ 返回arr.mapx=>Math.max…x; } 控制台。日志最大值为[4,5,1,3],[13,27,18,26],[32,35,37,39],[10001001857,1];
控制台。对数最大值为[17,23,25,12],[25,7,34,48],[4,-10,18,21],-72,-3,-17,-10] 所以在你的代码中,你在这一块出错了
if(arr[i][j] > largestWord[i]) {
largestWord[i] = arr[i][j];
}
您忘记的是,您有一个最大数字的起始值,即0,并且您将数组元素与该值进行比较。只有超过0的值才能替换该值。因此,我建议只初始化没有值的数组,并对此进行检查
//initialize the array without a value
let largestWord = new Array(4);
for(let i = 0; i < arr.length; i++) {
for(let j = 0; j < arr[i].length; j++) {
//also add a check for initial value
if(arr[i][j] > largestWord[i] || largestWord[i] == undefined) {
largestWord[i] = arr[i][j];
}
}
}
问题很简单!您已将最大值全部设置为0。。。那么哪个更大:0还是[-72,-3,-17,-10]中的任何一个?如果让largestWord=[Number.MIN\u SAFE\u INTEGER,…];如果您愿意坚持您的方法,请让largestWord=Arrayarr.length.fill-Infinity。但下面的答案中建议了一种较短的方法。