我想得到矩阵元素的总和,除了那些数字为0的元素,并得到错误: 未捕获的类型错误:无法设置未定义的属性“0”
function matrixElementsSum(matrix) {
let s = 0;
for (var i = 0; i < matrix.length; i++) {
for (var j = 0; j <= matrix.length; j++) {
if (matrix[i][j] == 0) {
matrix[i+1][j] = 0;
}
s += matrix[i][j]
}
}
return s
}
console.log(matrixElementsSum([[0, 1, 2, 0],
[0, 3, 2, 1],
[2, 0, 2, 3]]))
您的循环计数器 i 应该迭代行数,j 应该迭代列数。另外,在将
matrix[i+i][j]
设置为 0 之前,您还应该检查是否 i+1 < matrix.length
(行数)
function matrixElementsSum(matrix) {
let s = 0;
for (var i = 0; i < matrix.length; i++) {
for (var j = 0; j < matrix[0].length; j++) {
if (matrix[i][j] == 0 && i+1 < matrix.length) {
matrix[i+1][j] = 0;
}
s += matrix[i][j]
}
}
return s
}
这是我对这个问题的解决方案。希望它能帮助某人。
function matrixElementsSum(matrix) {
let susp = [];
return matrix.reduce((t, arr, i)=>{
return arr.reduce((tt, val, ii)=>{
if (val === 0) susp.push(ii);
if (susp.includes(ii)) {
return tt;
} else {
return tt+val;
}
}, 0) + t;
}, 0);
}
这是我使用 Python 的解决方案:
def solution(matrix):
row_len = len(matrix)
col_len = len(matrix[0])
sum = 0
for c_index in range(col_len):
for r_index in range(row_len):
if matrix[r_index][c_index] == 0:
break
else:
sum += matrix[r_index][c_index]
return sum
function solution(matrix) {
let sum= 0;
for (let i = 0; i < matrix[0].length; i++) {
for (let j = 0; j < matrix.length; j++) {
if (matrix[j][i] === 0) break;
sum+= matrix[j][i];
}
}
return sum;
}
function solution(matrix) {
for(var r=0,j=0;j<matrix[0].length;j++){
for(var i=0;i<matrix.length;i++){
if(matrix[i][j]===0) break
else r+=matrix[i][j]
}
}
return r
}
我花了一些时间来解决这个练习。我发现这不是很复杂。
function solution(matrix: number[][]): number {
let counter = 0
let s = matrix
for (let i = 0; i <= s.length-1; i++) {
for (let j = 0; j <= s[i].length-1 ; j++) {
if(i === 0 ){
counter = counter + s[i][j]
}
else if ( s[i - 1][j] !== 0 && s[0][j] !== 0){
counter = counter + s[i][j]
}
}
}
return counter
}