您的位置:首页 > Web前端

剑指offer 52 构建乘积数组

2017-10-26 15:36 337 查看

题目描述

给定一个数组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]。不能使用除法。

思路

构造一个二维矩阵,存储乘积结果,直接调用。

时间复杂度O(n^2)

代码

# -*- coding:utf-8 -*-
class Solution:
def multiply(self, A):
# write code here
length = len(A)
mul = []
for tmp in range(length):
mul.append([num for num in A])
for i in range(length):
for j in range(i + 1, length):
mul[i][j] = mul[i][j - 1] * mul[j][j]
B = [0 for n in range(length)]
if length == 1:
B = [0]
return B
elif length == 2:
B = [A[1], A[0]]
return B
for index in range(0, length):
if index == 0:
B[index] = mul[1][length - 1]
elif index == length - 1:
B[index] = mul[0][length - 2]
else:
B[index] = mul[0][index - 1] * mul[index + 1][length - 1]
return B
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: