[英]Finding the diagonal sum of 2D array
const diagonalSum = function (arr) {
var length=arr.length -1;
var sum=0;
for(let i=0;i<arr.length;i++){//1<3
sum+= arr[i][i]+arr[i][length-i]//[1][0]+
}
return sum;
};
尝试过这个,但是第二个和第三个测试用例没有通过。 还有别的逻辑吗?
const diagonalSum = function (arr) {
var length=arr.length -1;
var sum=0;
for(let i=0;i<arr.length;i++){//1<3
sum+= arr[i][i]+arr[i][length-i]//[1][0]+
}
return sum;
};
搜索任何其他逻辑
如果您尝试使用单个 for 循环查找 2d Array 的两条对角线的对角线和,下面是解决方案
const diagonalSum = function (arr) {
sum = 0;
for (let i = 0; i < arr.length; i++) {
sum = sum + arr[i][i] + arr[i][(arr[i].length - 1) - i]
}
return sum;
};
你的代码对我来说看起来不错。 下面是几个测试用例:
const diagonalSum = function (arr) { let maxIdx = arr.length - 1; let sum = 0; for(let i=0; i < arr.length; i++) { sum += arr[i][i] + arr[i][maxIdx-i]; } return sum; }; const matrix1 = [ [1, 1, 1], [1, 1, 1], [1, 1, 1] ]; const matrix2 = [ [1, 2, 3], [4, 5, 6], [7, 8, 0] ]; const matrix3 = [ [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1] ]; console.log({ matrix1: diagonalSum(matrix1), matrix2: diagonalSum(matrix2), matrix3: diagonalSum(matrix3) });
Output:
{
"matrix1": 6,
"matrix2": 21,
"matrix3": 8
}
请提供一些失败的测试用例。
这对你有用。
// 一个高效的 Javascript 程序,用于查找 // 对角线之和
function printDiagonalSums(mat,n)
{
let principal = 0, secondary = 0;
for (let i = 0; i < n; i++) {
principal += mat[i][i];
}
document.write("Principal Diagonal:"
+ principal+"<br>");
}
// Driver code
let a = [[ 1, 2, 3, 4, 5],
[5, 6, 7, 8, 5 ],
[ 1, 2, 3, 4, 5 ],
[ 5, 6, 7, 8, 5],
[ 5, 6, 7, 8, 5]];
printDiagonalSums(a, 5);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.