python3 两种方法

构建乘积数组

http://www.nowcoder.com/questionTerminal/94a4d381a68b47b7a8bed86f2975db46

方法一: 已知 B[i]=A[0]A[1]...A[i-1]*A[i+1]...*A[n-1],即B[n]是除了A[n]外A中其他 元素的累乘,所以只要两个for循环就可以解决

# -*- coding:utf-8 -*-
class Solution:
    def multiply(self, A):
        # write code here
        B = []
        length = len(A)
        for i in range(length):
            count = 1
            for j in range(length):
                if j == i:
                    continue
                count *= A[j]
            B.append(count)
        return B

方法二:
B[i]的值可以看作下图的矩阵中每行的乘积。
下三角用连乘可以很容求得,上三角,从下向上也是连乘。
因此我们的思路就很清晰了,先算下三角中的连乘,即我们先算出B[i]中的一部分,然后倒过来按上三角中的分布规律,把另一部分也乘进去。
借助一个大佬的图:图片说明

# -*- coding:utf-8 -*-
class Solution:
    def multiply(self, A):
        # write code here
        # 计算上三角形
        length = len(A)
        B=[None]*length
        B[0]=1
        for i in range(1,length):
            B[i] = B[i-1]*A[i-1]
        temp = 1
        n = length-2
        while n>=0:
            temp *= A[n+1]
            B[n] *= temp
            n-=1
        return B

全部评论

相关推荐

点赞 评论 收藏
分享
炫哥_:哥们项目描述里面vector和mysql之类的都要写吗,直接开头技术栈巴拉巴拉就行了,完全不是技术点啊
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-02 18:35
简历上把1个月实习写成了3个月,会进行背调吗?
码农索隆:一个月有一个月的实习经历,三个月有三个月的实习经历
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务