剑指offer-构建乘积数组-数组-python

题目描述

给定一个数组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]。不能使用除法。
 
 
思路:按上图把每行被1分割的两部分乘积都计算出来,这样可以从首尾分别用累乘算出两个列表,然后两个列表首尾相乘就是B的元素
 
首先构建一个数组B,B的值由A的长度组成,然后遍历B,将每个B数组中的元素初始化1
遍历A中除了i以外的所有元素,将每个元素累×在B上,输出B
 
# -*- coding:utf-8 -*-
class Solution:
    def multiply(self, A):
        # write code here
        B = [i for i in range(len(A))]
        for i in B:
            B[i] = 1
            for j in A[:i]+A[i+1:]:
                B[i]*=j
        return B

 

 
 
posted @ 2019-12-24 16:52  ayew  阅读(454)  评论(0编辑  收藏  举报