我似乎无法弄清楚为什么函数在第一个for循环之后而不是在函数末尾返回“ sum”。
var a = [
[1, 1, 1, 0, 0, 0],
[0, 1, 0, 0, 0, 0],
[1, 1, 1, 0, 0, 0],
[0, 0, 2, 4, 4, 0],
[0, 0, 0, 2, 0, 0],
[0, 0, 1, 2, 4, 0]
];
function hourglassSum(arr) {
var sum = 0;
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < arr[i].length; j++) {
var sumTemp = arr[i][j] + arr[i][j + 1] + arr[i][j + 2] + arr[i + 1][j + 1] + arr[i + 2][j] + arr[i + 2][j + 1] + arr[i + 2][j + 2];
if (!isNaN(sumTemp) && sumTemp > sum) {
sum = sumTemp;
}
}
document.write('Sum: ' + sum + '<br/>');
}
document.write('Sum: ' + sum + '<br/>');
}
hourglassSum(a);
答案 0 :(得分:1)
您的问题是您在调用时试图访问大于数组大小的数组索引:
import Enzyme, { shallow, render, mount } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
// React 16 Enzyme adapter
Enzyme.configure({ adapter: new Adapter() });
因为要循环到数组的大小,然后调用j + 1或j + 2(现在大于数组的大小,并导致错误)。