作业帮面试中手写代码——两个矩阵相乘
def matrixMul(A, B):
if len(A[0]) == len(B):
res_row = len(A)
res_col = len(B[0])
res = [[0] * res_col for _ in range(res_row)]
for i in range(len(A)):
for j in range(len(B[0])):
for k in range(len(B)):
res[i][j] += A[i][k] * B[k][j]
return res
return ('输入矩阵有误!')
之后问我能不能进行优化,我没有想出来,面试官提示从寻址方面考虑一下。我回答可以将三层循环的顺序更改,从而减少寻址次数。
另外,我们可以在循环之前判断两个乘数中有没有0
for i in range(len(A)):
for k in range(len(B)):
if res[i][k] != 0:
for j in range(len(B[0])):
res[i][j] += A[i][k] * B[k][j]