给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。python
时间限制:1秒;空间限制:32768K;本题知识点:数组数组
两次循环实现除自身外的累乘,时间复杂度较大。app
Python代码:code
# -*- coding:utf-8 -*- class Solution: def multiply(self, A): # write code here result = [] for i in range(len(A)): L = 1 #中间变量 for j in range(len(A)): if i != j: L *= A[j] result.append(L) return result
按照下图,矩阵被分为上三角矩阵和下三角矩阵,分别求得连乘值,最后上三角连乘值乘以对应下三角连乘值便可。blog
Python代码:ip
# -*- coding:utf-8 -*- class Solution: def multiply(self, A): # write code here L1 = [1] #下三角连乘值,长度n,初始1 L2 = [1] #上三角连乘值,长度n,倒序,初始1 L = [] #结果数组,长度n for i in range(1,len(A)): L1.append(L1[i-1]*A[i-1]) L2.append(L2[i-1]*A[-i]) for i in range(len(A)): L.append(L1[i]*L2[-(i+1)]) return L