在 codewars 做練習題時遇到 一道矩陣相關的題目,一開始挺懵逼的,因為相關的的概念忘得差不多了,于是查了一下 資料
可知矩陣 A、B 乘積 ( C=AB ) 滿足的條件是:
1、當矩陣A的列數等于矩陣B的行數時,A與B可以相乘。
2、矩陣C的行數等于矩陣A的行數,C的列數等于B的列數。
3、乘積C的第m行第n列的元素等于矩陣A的第m行的元素與矩陣B的第n列對應元素乘積之和
根據已知條件和題目要求可解:
function getMatrixProduct(a, b) {
//If a and b can be multiplied, returns the product of a and b as a two-dimensional array. Otherwise returns -1.
if(a[0].length!==b.length) return -1
let aRows=a.length
let aCols=a[0].length
let bRows=b.length
let bCols=b[0].length
let result=new Array(aRows)
for(let i=0;i<aRows;i++){
result[i]=new Array(bCols)
for(let j=0;j<bCols;j++){
result[i][j]=0
for(let k=0;k<aCols;k++){
result[i][j]+=a[i][k]*b[k][j]
}
}
}
return result
};