##1.解题步骤
对于该题,本题在于:通过题中给出的已知条件,可以找到两种解题方法:
#1.1解法1
使用结果=左边的乘积*右边的乘积
但存在两种特殊情况:
1):B[0]无左边的乘积
2):B[n-1]无右边的乘积
其余的可将其分为左右两边
# -*- coding:utf-8 -*-
class Solution:
def multiply(self, A):
# write code here
B=[1]*len(A)
n=len(A)
#解法,先计算出所有的矩阵数组
for i in range(n):
#对A进行遍历
if i==0:
for l in range(1,n):
B[0]*=A[l]
elif i==n-1:
for m in range(0,n-1):
B[n-1]*=A[m]
else:
# 前半边数据的额成绩为:B=A[0]*A[1]*...*A[i-1]#迭代的乘法,使用for循环
f_result=1
b_result=1
for j in range(i):
f_result*=A[j]
#前半边数据的额成绩为:B=A[0]*A[1]*...*A[i-1]#迭代的乘法,使用for循环
for k in range(i+1,n):
b_result*=A[k]
B[i]=f_result*b_result
return B
#1.2解法2
进行双重循环,不计算i=j的情况即可
class Solution:
def multiply(self, A):
# write code here
#方法二:复杂度明显降低,当i==j时,A[i]将不参与运算
n=len(A)
B=[1]*n
for i in range(n):
for j in range(n):
if i!=j:
B[j]*=A[i]
return B