美文网首页【python剑指offer】
【python】剑指offer,构建乘积数组?

【python】剑指offer,构建乘积数组?

作者: 阿牛02 | 来源:发表于2019-07-29 08:05 被阅读0次

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

    分析:

    code:

    def multiply(A):

        if not A:

            return []

        num = len(A)

        B = [None] * num

        B[0] = 1

        for i in range(1, num):

            B[i] = B[i - 1] * A[i - 1]

        # 计算后面一部分

        # 自下而上

        # 保留上次的计算结果乘本轮新的数,因为只是后半部分进行累加,所以设置一个tmp,能够保留上次结果

        tmp = 1

        for i in range(num - 2, -1, -1):

            tmp *= A[i + 1]

            B[i] *= tmp

        return B

    相关文章

      网友评论

        本文标题:【python】剑指offer,构建乘积数组?

        本文链接:https://www.haomeiwen.com/subject/flgcrctx.html