题目描述

给定一个数组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]。不能使用除法。
 
剑指offer-构建乘积数组-数组-python
 
思路:按上图把每行被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

 

 
 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-05-09
  • 2021-11-17
  • 2021-11-12
  • 2021-07-31
猜你喜欢
  • 2021-12-13
  • 2021-04-06
  • 2021-05-16
  • 2021-11-18
  • 2022-02-18
  • 2022-12-23
  • 2022-03-06
相关资源
相似解决方案